我想从表中选择所有重复项:
SELECT * FROM people HAVING (count(*) OVER (PARTITION BY name)) > 1;
不幸的是我收到错误:
Error Code: 3593. You cannot use the window function 'count' in this context.
一个不太优雅的解决方案是:
SELECT
*
FROM
people
WHERE
code IN (SELECT
name
FROM
people
GROUP BY name
HAVING COUNT(*) > 1);
如何重写我的第一个查询以使其正常工作?
最佳答案
如果代码
相同,那么您可以使用exists
:
select p.*
from people p
where exists (select 1 from people p1 where p1.name = p.name and p.code <> p1.code);
如果code
列没有标识功能,则使用标识列如果整个表没有任何标识列,那么您的方法可以很好地处理以下更新的查询:
SELECT p.*
FROM people p
WHERE name IN (SELECT name FROM people GROUP BY name HAVING COUNT(*) > 1);
关于mysql - 在 MySQL 中使用分区选择重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55730760/