我们可以在 T-SQL 中使用 Group by 子句执行像删除这样的 DML 操作吗?
最佳答案
SELECT 语句 - http://msdn.microsoft.com/en-us/library/ms189499.aspx
DELETE 语句 - http://msdn.microsoft.com/en-us/library/ms189835.aspx
正如你所看到的,GROUP BY在SELECT中,但在DELETE中没有,所以你不能直接使用它。 INSERT 语句中也没有它。
[ WITH <common_table_expression> [ ,...n ] ]
DELETE
[ TOP ( expression ) [ PERCENT ] ]
[ FROM ]
{ <object> | rowset_function_limited
[ WITH ( <table_hint_limited> [ ...n ] ) ]
}
[ <OUTPUT Clause> ]
[ FROM <table_source> [ ,...n ] ]
[ WHERE { <search_condition>
| { [ CURRENT OF
{ { [ GLOBAL ] cursor_name }
| cursor_variable_name
}
]
}
}
]
[ OPTION ( <Query Hint> [ ,...n ] ) ]
[; ]
但是使用WHERE子句,或者子句,可以利用GROUP BY,比如
DELETE tbl
WHERE id NOT IN (select max(id) from tbl GROUP BY date_logged)
或
DELETE a
FROM tbl a
JOIN (select a_id from othertbl group by a_id having count(*) >= 3) b
ON a.id = b.a_id
关于sql-server - 我们可以使用 Group by 子句执行像删除这样的 DML 操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5691076/