我怎样才能使这项工作?我有一个表 u_uzivatele
并且我想将它加入到表 b_objednavky
但我也不希望表 u_uzivatele
中的行被加入可以连接到表 bw_paid_orders
并且不满足 WHERE
子句。现在,SELECT
语句返回表,其中包含表 uzivatele
中的行,这些行也在表 bw_paid_orders
中并且满足 WHERE 子句的条件。但是我无法在表 u_uzivatele
上加入它,因为返回了多行。
SELECT STMT
FROM b_objednavky INNER JOIN u_uzivatele ON b_objednavky.uzivatel =
(
SELECT u_uzivatele.id
FROM u_uzivatele
JOIN bw_paid_orders
ON u_uzivatele.id = bw_paid_orders.user_id
WHERE bw_paid_orders.active_thru < now() + interval '6 months' ) uzivatele
最佳答案
您只想加入 u_uzivatele
记录,不存在 bw_paid_orders
中的特定条目。因此,请使用 NOT EXISTS
或更简单的 NOT IN
。
select ...
from b_objednavky o
join u_uzivatele u on u.id = o.uzivatel
and u.id not in (select user_id from bw_paid_orders po
where active_thru < now() + interval '6 months')
关于sql - 在 SELECT 语句上连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42393394/