SQL 将行与在同一表中的列中显示差异进行比较



你好,我在SQL或MySQl中寻找关于比较同一表中的行的查询

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

我的桌子

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'

相关内容

  • 没有找到相关文章

最新更新