2016-03-08 94 views
0

我想在SQL選擇從兩個表中不同的值,但我的代碼是行不通的。它的第一部分工作:不同的值在兩個SQL表

SELECT distinct a.c1, b."Commodity.Code"::numeric FROM coletados a, commod b 
    WHERE a.c1 = b."Commodity.Code"::numeric 

但是,當我嘗試選擇不同的值,它不起作用。我的整個SQL語句是:

SELECT * FROM commod b 
    WHERE b."Commodity.Code"::numeric =! 
     (SELECT DISTINCT a.c1, b."Commodity.Code"::numeric 
      FROM coletados a, commod b 
       WHERE a.c1 = b."Commodity.Code"::numeric) 

在現實中,我只想說的是兩個表中不同數量的列,所以我不需要「*」,但我不知道我是否可以選擇相同的變量(a.c1或b。「Commodity.Code」)兩次。感謝所有的幫助。

+0

這是什麼味道或SQL? –

回答

0

你是一個價值比較兩個值。在Postgres裏,一個方法是:

select * 
from commod b 
where (b.c1, "Commodity.Code"::numeric) not in (select a.c1, a."Commodity.Code"::numeric 
               from coletados a 
               ); 

或者,用你的方法:

select * 
from commod b 
where "Commodity.Code"::numeric not in (select a."Commodity.Code"::numeric 
             from coletadoa a 
             where a.c1 = b.c1 
             ); 

也就是說,子查詢不需要join,只是相關條款。

+0

非常感謝Gordon! –

相關問題