在SQL中比较表?

时间:2013-08-06 18:58:38

标签: sql left-join

我有两张桌子,我想彼此比较。

Table1:                      Table2:

col1  col2 col3                col1  col2 
msp   msp   ...                 msp  msp 
cin   cin   ...                 cnn  cnn 
msp   eri   ...                 cin  cin 
cnn   cnn   ...
was   asc   ...

我希望结果表看起来像这样:

Table3
col1  col2     col3 col4               
msp   msp      msp  msp             
cin   cin      cin  cin             
msp   eri      null null             
cnn   cnn      cnn  cnn 
was   asc      null null

我有这样的查询,但它没有按照我想要的方式返回它。

SELECT DISTINCT Table1.col1, Table1.col2
FROM TESTDB
LEFT JOIN 
    Table2
    ON Table1.col1 = Table2.col1
    and Table1.col2 = Table2.col2 

这已经回归:

col1  col2     col3 col4               
msp   msp      msp  msp             
cin   cin      cin  cin             
msp   eri      msp  eri             
cnn   cnn      cnn  cnn 
was   asc      was  asc  

我认为我的条件条款ON有问题。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

试试这个

    SELECT DISTINCT Table1.col1, Table1.col2 ,Table2.col1 as col3 ,Table2.col2 as col4 
    FROM Table1
    LEFT JOIN 
    Table2
    ON Table1.col1 = Table2.col1
    and Table1.col2 = Table2.col2

DEMO HERE

答案 1 :(得分:1)

很难说你的查询有什么问题,因为你向我们展示了一个不完整的(在SELECT中只有两列)。如果我猜,我会说你没有用相同的名称别名字段。

这有效:

SELECT DISTINCT t1.col1 col11, t1.col2 col12, t2.col1 col21, t2.col2 col22
FROM Table1 t1
LEFT JOIN 
    Table2 t2
    ON t1.col1 = t2.col1
    and t2.col2 = t2.col2 

SQL小提琴here