Tal*_*han 5 mysql sql subquery
我正在运行一个查询,其中包含在子句中多次使用的相同子查询WHERE.
我有拖字段的表client_id,buyer_id.
子查询返回要从结果中排除的日期列表.
这就是我使用它的方式.
SELECT
id, client_id, buyer_id
FROM relation
WHERE
client_id NOT IN (SELECT <some_id> FROM <some_table> WHERE ...)
AND buyer_id NOT IN (SELECT <some_ids> FROM <some_table> WHERE ...)
Run Code Online (Sandbox Code Playgroud)
这是按预期的方式工作但令我困扰的是,有两个相同的子查询.我想知道是否有一种方法可以使用它一次并将结果用于两个地方.
谢谢.
您可以使用以下方式编写NOT EXISTS:
SELECT
id, client_id, buyer_id
FROM relation AS r
WHERE NOT EXISTS
( SELECT 1
FROM <some_table>
WHERE (r.client_id = <some_id> OR r.buyer_id = <some_id>)
AND ...
) ;
Run Code Online (Sandbox Code Playgroud)