SQL如何比较两个不同表中的两列

时间:2015-03-05 20:13:13

标签: mysql sql sql-server

我有两个表,其中表1包含4列,而表2包含8列。我在table1中有两列,我想将它们与table2中的两列进行比较。

Table 1 have column1 and column2 (that needs to be compared)
Table 2 have column6 and column7 (that needs to be compared) 

我需要比较两列的组合。我尝试执行以下查询,但它不起作用

Select * from table1 
where column1, column2 NOT IN (Select column6, column7 from table2)

如何比较两个表中的两列?

7 个答案:

答案 0 :(得分:2)

尝试减号。这将为table1的第一个select语句提供任何结果,这些结果不在table2的第二个select语句中。

select column1, column2 from table1
minus
select column6, column7 from table2

答案 1 :(得分:1)

NOT EXISTS是" null safe"版本NOT IN。 如果你的意思是组合column1和column2不在table2中的同一行:

select *
from table1
where NOT EXISTS (select 1 from table2
                  where table1.column1 = table2.column6
                    and table1.column2 = table2.column7)

或者,如果你的意思是只有column1和column2的值甚至不能在table2中的不同行中:

select *
from table1
where NOT EXISTS (select 1 from table2
                  where table1.column1 = table2.column6)
  and NOT EXISTS (select 1 from table2
                  where table1.column2 = table2.column7)

答案 2 :(得分:1)

Except显示了两个表之间的差异(Oracle专家使用减号而不是except,并且语法和用法相同)。它用于比较两个表之间的差异。例如,让我们看看两个表之间的差异

SELECT * FROM
 table1
EXCEPT
SELECT * FROM
 table2

答案 3 :(得分:0)

我能想到的具有最少比较的查询是

Select t1.* 
from table1 t1
left join table2 t2 on t1.column1 in (t2.column6, t2.column7)
                    or t1.column2 in (t2.column6, t2.column7)
where t2.column6 is null

答案 4 :(得分:0)

    select * from table1 where column1 not in(select column 6 from table2) or column2 not in(select column7 from table2)

这将为您提供table1中的行,其中col1和col6或col2和col7之间存在差异

希望这有帮助

答案 5 :(得分:0)

$('.volume-button').css({
        "width": "100px"
      });

答案 6 :(得分:0)

请尝试以下查询。

 Select case when (table1.column1=table2.column6) then 1 else 0 end coluumn1_6 
 check , case when (table1.column2 =table2.column7 ) then 1 else 0 end

     from table1 
    inner join
     table2
on table1.ID=Table2.ID