sql - 在 SELECT 语句上连接表

标签 sql postgresql

我怎样才能使这项工作?我有一个表 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/

相关文章:

具有条件限制的 MYSQL 加入/联合

postgresql - 使用 Postgres 注入(inject)自动化日志

SQL 返回一个不同的列和不同列的第一个日期

Sql COUNT 性能问题

sql - C. J. Date 的 "SQL and Relational Theory"中的关系理论

mysql - 删除和更新时的默认值是什么

mysql - 使用 MIN() 连接,其中 MIN() 大于连接左侧的值

mysql - MySQL 表的命名约定

ruby-on-rails - 表条目在开发中工作正常但在生产中不工作

postgresql - PostgresQL 将一行复制到同一个表并更改一个值