sql根据非主键字段去重

本文介绍了如何在SQL中根据非主键字段进行数据去重,特别是当遇到非主键字段为text类型导致max运算符无效的问题时,提供了解决方案,即通过转换数据类型来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原sql:

SELECT *
FROM Sys_TaskAndLTI
WHERE Term_ID = '27426f87-5cd2-4f4d-8153-ed9a71db860a'
AND Group_ID = '49e166de-7921-414e-bb91-5e42c19feffe'
AND Group_Info_ID = '4b3f6a77-e87c-499a-bfc7-8326a4c7f2ce'

查询结果为:

需要根据Task_ID去重,但Task_ID为非主键字段,修改后的sql为:

SELECT MAX(aa.TaskAndLTI_ID) TaskAndLTI_ID,MAX(aa.Group_Info_ID) Group_Info_ID,MAX(aa.Group_ID) Group_ID,
MAX(aa.TaskAndLTI_Content) TaskAndLTI_Content,MAX(aa.LP_Hour_ID) LP_Hour_ID,MAX(aa.CreatTime) CreatTime,
MAX(aa.Path) Path, MAX(aa.CompoundState) CompoundState,MAX(aa.Uptime) Uptime,MAX(aa.Term_ID) Term_ID,
MAX(aa.Subject_ID) Subject_ID,MAX(aa.Plate_ID) Plate_ID,MAX(aa.Task_ID) Task_ID,MAX(aa.MergeNumber) MergeNumber,
MAX(aa.Reserve) Reserve,MAX(aa.TaskAndLTI_Title1) TaskAndLTI_Title1,MAX(aa.TaskAndLTI_Title2) TaskAndLTI_Title2,
MAX(aa.VideoPath) VideoPath,
MAX(aa.PathHtml) PathHtml,
MAX(aa.LocalFileName) LocalFileName,
--MAX(aa.HtmlContent) HtmlContent,
MAX(CONVERT(NVARCHAR(1000), aa.HtmlContent)) HtmlContent,
--MAX(aa.RejectReason) RejectReason,
--MAX(aa.Reflect) Reflect,
MAX(aa.OverRecord) OverRecord,
MAX(aa.FinalsubTime) FinalsubTime,
MAX(aa.TextSubState) TextSubState,MAX(aa.VideoSubState) VideoSubState,MAX(aa.MicroSubState) MicroSubState,MAX(aa.ReflectState) ReflectState
FROM 
	(SELECT *
	FROM Sys_TaskAndLTI
	WHERE Term_ID = '27426f87-5cd2-4f4d-8153-ed9a71db860a'
		AND Group_ID = '49e166de-7921-414e-bb91-5e42c19feffe'
		AND Group_Info_ID = '4b3f6a77-e87c-499a-bfc7-8326a4c7f2ce') aa 
		group by aa.Task_ID 
		having count(aa.Task_ID)>=1

其中sql执行报错:操作数数据类型 text 对于 max 运算符无效。

则将

MAX(aa.HtmlContent) HtmlContent

修改为:
MAX(CONVERT(NVARCHAR(1000), aa.HtmlContent)) HtmlContent,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值