我有一个与此类似的数据库:
Name State
Bill CA
Joe NY
Susan CA
我知道我可以获得每个州的记录总数,如下所示:
SELECT State, COUNT(*) as count FROM users GROUP BY State
我正在尝试删除状态总数小于 2(或任意任意数字)的所有记录
类似这样的东西(伪代码):
DELETE FROM users WHERE totalUsersInState < 2
所以最终的数据库应该是这样的
Name State
Bill CA
Susan CA
正确的语法是什么?我想不通。
最佳答案
我们可以使用连接到内联 View (MySQL 术语中的派生表)
先将其写为 SELECT 语句
SELECT t.*
FROM users t
JOIN ( SELECT r.state
FROM users r
GROUP
BY r.state
HAVING SUM(1) < 2
) s
ON s.state = t.state
验证这些是我们要删除的行,然后通过替换第一个 SELECT 关键字将其转换为 DELETE 语句...
DELETE t.*
FROM ...
请注意,由于连接谓词中的相等比较,这不会删除 state
具有 NULL 值的行。
关于MySQL 从数据库中删除分组记录数小于值的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48592040/