我有一个主表,通过another_table_id
字段与另一个表相关。
id another_table_id
1 1
2 2
3 2
我需要选择所有具有重复项的行(主表的id 2和3)
我尝试了以下查询
select * from main_table
group by another_table_id
having count(*) > 1
但是查询给了我
SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列' main_table.id'它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by
不兼容此外,此查询
select * from main_table
group by id, another_table_id
having count(*) > 1
请给我一个空的数据集,有什么建议吗?
答案 0 :(得分:3)
这是一种方式:
SELECT DISTINCT x.*
FROM my_table x
JOIN my_table y
ON y.another_table_id = x.another_table_id
AND y.id <> x.id;
答案 1 :(得分:0)