2016-03-08 72 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! –

相关问题