我正在尝试从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 :(得分: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
,只需要一个关联子句。