我有两个表A和B. B包含一个包含整数的列binder
。现在我想搜索放在A.binder中的表A的那些行。以下陈述符合我的要求:
SELECT * FROM A WHERE A.binder=ANY(SELECT binder FROM B)
但我期待像
这样的东西SELECT * FROM A WHERE A.binder=ANY(B.binder)
或
SELECT * FROM A WHERE A.binder IN array_agg(B.binder)
会奏效。考虑B.binder可能包含重复项。因此,我无法使用内部联接简化语句。
答案 0 :(得分:0)
使用子查询从表B中获取整数。
SELECT * FROM A
WHERE A.binder IN (
SELECT binder FROM B
);
答案 1 :(得分:0)
仍然可以进行INNER JOIN。
SELECT A.* FROM A INNER JOIN (SELECT DISTINCT binder FROM B) AS C ON
A.binder = C.binder
为什么没有(B.binder)工作?因为在这种情况下ANY需要一个子查询。