gpt4 book ai didi

MySQL选择两列上的唯一记录

转载 作者:行者123 更新时间:2023-11-29 02:23:31 24 4
gpt4 key购买 nike

如何选择两列唯一的行?

给定表格

id    col1   col2
1 a 222
2 b 223
3 c 224
4 d 224
5 b 225
6 e 226

如何删除 col1 中的重复项和 col2 中的重复项,以获得整个表唯一的行,所以结果是

id   col1   col2
1 a 222
6 e 226

有没有比使用子查询更好的方法?

SELECT * FROM table WHERE id 
IN (SELECT id FROM table WHERE col1
IN (SELECT col1 FROM table GROUP BY col1 HAVING(COUNT(col1)=1))
GROUP BY col2 HAVING(COUNT(col2)=1))

最佳答案

这应该可以使用 exists:

select *
from yourtable y
where not exists (
select 1
from yourtable y2
where y.id != y2.id
and (y.col1 = y2.col1
or y.col2 = y2.col2))

这是使用 outer join 的替代解决方案,因为我读过 mysql 有时不能很好地处理 exists:

select *
from yourtable y
left join yourtable y2 on y.id != y2.id
and (y.col1 = y2.col1
or y.col2 = y2.col2)
where y2.id is null;

关于MySQL选择两列上的唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27495888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com