gpt4 book ai didi

mysql - SQL 比较行并显示同一表中列的差异

转载 作者:行者123 更新时间:2023-11-29 10:40:40 25 4
gpt4 key购买 nike

您好,我正在寻找 SQL 或 MySQl 中有关比较同一个表中的行的查询

该查询应显示具有相同 id 但列中记录不同的最后 2 行

我的 table

ID|is_superuser|username|first_name|last_name|email          |is_staff|is_active|
1| 1|admin |FC | |admin@admin.com| 1| 1|
1| 1|admin | | |admin@admin.com| 1| 1|
1| 1|admin |adminname | |admin@admin.eu | 1| 1|

结果:

ID|username|first_name|email|
1|admin |adminname |admin@admin.eu|
1|admin | |admin@admin.com|

感谢帮助

最佳答案

您可以使用 exists 子句要求存在具有相同 id 但不同 email 的另一行:

select  *
from MyTable t1
where exists
(
select *
from MyTable t2
where t1.id = t2.id
and coalesce(t1.email, '') <> coalesce(t2.email, '')
)

根据您的评论,如果您有很多列,您可以使用如下查询生成 where 子句:

select  concat('and coalesce(t1.', column_name, ', '''') <> coalesce(t2.', 
column_name, ', '''')')
from information_schema.columns
where table_name = 'MyTable'

关于mysql - SQL 比较行并显示同一表中列的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45545803/

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