我正在尝试执行以下查询:
UPDATE TempRH
SET TempRH.poids=0
WHERE TempRH.poids IN (SELECT *
FROM(
SELECT MAX(TempRH.poids)as poids,TempRH.utilisateur_id
FROM TempRH
INNER JOIN (SELECT TempRH.utilisateur_id
FROM TempRH
GROUP BY TempRH.utilisateur_id
HAVING COUNT(*)>2)t
ON t.utilisateur_id =TempRH.utilisateur_id
GROUP BY TempRH.utilisateur_id
)x);
我收到以下错误 消息116,16级,状态1,行16 当子查询未与EXISTS一起引入时,只能在选择列表中指定一个表达式。
答案 0 :(得分:2)
哦,是的,你的错误,但看看评论:)
您正在从查询中撤回2列,您只能为in子句返回一列。
删除,temprh.utilisateur_id,在select语句中不需要它
答案 1 :(得分:0)
以下是您删除的帖子以及如何进行更新的解决方案:
declare @temprh table (utilisateur_id int, poids int)
insert into @temprh values (1,10)
insert into @temprh values (1,20)
insert into @temprh values (2,30)
insert into @temprh values (3,40)
insert into @temprh values (3,50)
;with x as (
SELECT utilisateur_id as uu, MAX(TempRH.poids)as pp, COUNT(*) as cnt
FROM @temprh as TempRH
GROUP BY TempRH.utilisateur_id
)
UPDATE @TempRH
SET poids=0
WHERE exists (select * from x where x.uu = Utilisateur_id and pp = poids and cnt=2)
当然这是一个例子但我只是用变量替换你的表名来获得一些数据。你想把较高的一个删除到0吗?