Abe*_*ler 34 sql sql-server sql-server-2008
我想做类似下面的事情:
DELETE UserPredictions
GROUP BY UserId
HAVING COUNT(*) < 500
Run Code Online (Sandbox Code Playgroud)
但是我收到了语法错误.甚至可以在SQL Server中使用HAVING子句进行删除,还是必须将计数滚动到CTE并使用连接执行删除?
Gor*_*off 49
并不是的.having子句意味着聚合,这意味着您不再拥有原始行.
我想你想要以下内容:
DELETE from UserPredictions
where UserId in (select UserId from UserPredictions group by UserId having count(*) < 500)
Run Code Online (Sandbox Code Playgroud)
Zan*_*ien 21
您可以在DELETE
语句中使用已连接的子选择:
DELETE a
FROM UserPredictions a
JOIN
(
SELECT UserId
FROM UserPredictions
GROUP BY UserId
HAVING COUNT(1) < 500
) b ON a.UserId = b.UserId
Run Code Online (Sandbox Code Playgroud)
vul*_*ven 11
试试这个嵌套查询:
DELETE FROM UserPredictions
WHERE UserId IN (SELECT UserId
FROM UserPredictions
GROUP BY UserId
HAVING COUNT(*) < 500)
Run Code Online (Sandbox Code Playgroud)