【问题标题】:Compare combination of two column with combination of other two in SQL比较 SQL 中两列的组合与其他两列的组合
【发布时间】:2015-02-22 09:34:56
【问题描述】:

我有 2 个表,tbl_NameCode 和 tbl_Bkp 都有列 ID 和 Name。

我必须从 tbl_NameCode 中选择不在 tbl_bkp 中的记录。

SELECT * FROM tbl_Bkp 
WHERE ? */COMBINATION OF ID,Name NOT IN (SELECT COMBINATION OF ID,NAME FROM tbl_NameCode )*/

如何比较两列的组合与其他两列的组合?

【问题讨论】:

  • 两个表结构是否相同
  • 是的。两个表具有相同的结构。

标签: sql sql-server sql-server-2008 select join


【解决方案1】:

如果没有错,Except 运算符应该可以工作。

SELECT Id1,Id2,Id3,..Name FROM tbl_Bkp
Except
select Id1,Id2,Id3,..Name from tbl_NameCode 

【讨论】:

    【解决方案2】:

    使用LEFT JOIN从左表获取所有记录,并添加where条件并检查第二个表的空值以查找左表不匹配的记录

    试试这个:

    SELECT NC.ID, NC.Name
    FROM tbl_NameCode NC 
    LEFT OUTER JOIN tbl_bkp A ON NC.ID = A.ID AND NC.Name = A.Name
    WHERE A.ID IS NULL;
    

    【讨论】:

      【解决方案3】:

      你可以连接字符串。如果您的 ID 是整数,则将其转换为 nvcrchar(50)

      SELECT * FROM tbl_Bkp 
      WHERE ID+''+Name NOT IN (SELECT cast(ID as nvarchar(50))+''+NAME FROM tbl_NameCode 
      

      【讨论】:

        【解决方案4】:

        您也可以尝试以下方法:

        declare @tbl_NameCode table (id int, name varchar(100))
        
        declare @tbl_Bkp table (id int, name varchar(100))
        
        insert into @tbl_NameCode select 1, 'ABC'
        union select 2, 'XYZ'
        union select 3, 'PQR'
        
        insert into @tbl_Bkp select 1, 'ABC'
        union select 2, 'XXX'
        union select 3, 'PQR'
        
        select a.* from @tbl_Bkp a
        left join @tbl_NameCode b on convert(varchar, a.id) + a.name = convert(varchar, b.id) + b.name
        where b.id is null
        

        【讨论】:

          【解决方案5】:

          使用 SQL EXISTS 将为您进行很好的比较。并返回不同的结果。 Exists 非常快,并且在您有大量记录的情况下更可取。

          SELECT ID,Name FROM tbl_Bkp t1
           WHERE NOT EXISTS (SELECT ID,Name FROM tbl_NameCode WHERE ID=t1.ID AND Name=t1.Name )
          

          【讨论】:

            猜你喜欢
            • 2023-01-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多