比较两个表中的行,仅显示具有不同值的列

时间:2016-10-16 23:47:53

标签: mysql

如果我的数据库中有两个类似的表,其中一个表是这样的:

表一

ID   Name   Date       Profile  Status  Age    
213  John   12/2/2010   KDS      ONB    32
214  Robert 12/2/2011   KDS      ONB    22



表2

ID   Name   Date       Profile  Status  Age    
213  John   12/2/2010   ABD      DNP    32

我想要这样的结果

RESULT

ID   Profile  Status
213  ABD      DNP

所以基本上

  1. 仅匹配基于主键的两个表中的记录
  2. 返回ID(主键),所以我知道它是什么记录
  3. 仅从表格二
  4. 返回更新的值

    我只能使用此代码显示第一点:

    SELECT *
    FROM wp_records AS one
    INNER JOIN wp_records_update AS two ON one.ID = two.ID
    

2 个答案:

答案 0 :(得分:0)

不确定这是否是您想要的,但如何:

SELECT one.id, two.profile, two.status
FROM wp_records AS one
INNER JOIN wp_records_update AS two ON one.ID = two.ID
WHERE one.profile<>two.profile AND one.status<>two.status

我没有测试它,但我认为它应该可行

答案 1 :(得分:-1)

我建议使用EXCEPT子句/运算符

SELECT *
FROM table1 
EXCEPT
SELECT *
FROM table2

comcomly它用于组合两个SELECT语句并返回第一个SELECT语句中未被第二个SELECT语句返回的行