【问题标题】:Compare two identical tables and retrieve differential rows [duplicate]比较两个相同的表并检索差异行[重复]
【发布时间】:2017-11-25 10:26:12
【问题描述】:

有没有办法比较两个相同的表并检索 Informix DB 中的差异行?

考虑下表,其中 ID 是主键。

TABLE A     

ID    NAME    EMAIL               PROFILE
a1    ABC     ABC@ymail.com       student  
a2    XYZ     XYZ@gmail.com       student
a3    LMN     LMN@gmail.com       Staff

TABLE B

ID    NAME    EMAIL               PROFILE
a1    ABC     ABC@ymail.com       student
a2    XYZ     XYZ@gmail.com       student
a3    LMN     LMN@ymail.com       student

请帮助我构建 SQL 以从表 A 中检索与表 B 不匹配的行。

输出应该是:

ID    NAME    EMAIL               PROFILE
a3    LMN     LMN@gmail.com       Staff

【问题讨论】:

标签: sql informix


【解决方案1】:
SELECT  *
FROM    TABLE_A 
            LEFT JOIN TABLE_B   
                ON TABLE_A.ID = TABLE_B.ID
                    AND TABLE_A.[NAME] = TABLE_B.[NAME]
                    AND TABLE_A.EMAIL = TABLE_B.ID
                    AND TABLE_A.[PROFILE] = TABLE_B.[PROFILE]
WHERE   TABLE_B.[NAME] IS NULL

【讨论】:

  • 请注意,方括号引用符号是 MS SQL Server 和 Sybase 特有的——其他 DBMS 不支持它。在 Informix 中,使用 'name' 和 'profile' 作为列名不会导致任何未加引号的问题。
  • 谢谢西蒙娜和乔纳森
猜你喜欢
  • 2014-05-12
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 2019-05-15
相关资源
最近更新 更多