Postgres是列中的值

时间:2016-05-04 03:12:38

标签: postgresql

我有两个表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可能包含重复项。因此,我无法使用内部联接简化语句。

2 个答案:

答案 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需要一个子查询。