You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现仅当Query1无结果时返回Query2结果的单SQL查询

解决方案:基于EXISTS的条件查询实现

可以用NOT EXISTS子查询来实现需求逻辑,SQL语句如下:

SELECT aa.id 
FROM A aa 
JOIN B bb ON aa.id = bb.pid 
WHERE bb.pid = 10 
  AND aa.sid IS NULL
  AND NOT EXISTS (
    SELECT aa.id 
    FROM A aa 
    JOIN B bb ON aa.id = bb.pid 
    WHERE bb.pid = 10 
      AND aa.sid IS NOT NULL
  );

逻辑说明

  • 当Query1(即NOT EXISTS里的子查询)返回0行结果时,NOT EXISTS判断为真,外层的Query2条件全部满足,会返回对应的数据;
  • 当Query1有返回结果时,NOT EXISTS判断为假,外层查询没有符合所有条件的行,因此不会返回任何内容。
  • 这种写法完全不需要使用UNION或COALESCE,仅用单条查询就实现了需求。

内容的提问来源于stack exchange,提问作者lkreinitz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:32:06