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

如何编写SQL查询:优先查询financialscheduletype=2的数据,若无则查询financialscheduletype=0的数据

嘿,我来帮你搞定这个SQL查询需求,这里有几种实用的写法,适配MySQL、PostgreSQL、SQL Server等主流数据库:

方案一:用EXISTS子查询+UNION ALL实现条件分支

这个写法逻辑很直观:先尝试查询financialscheduletype=2的数据,如果存在就返回这些行;如果不存在,再返回financialscheduletype=0的行。代码如下:

SELECT * 
FROM 你的表名
WHERE financialscheduletype = 2
UNION ALL
SELECT * 
FROM 你的表名
WHERE financialscheduletype = 0
  AND NOT EXISTS (SELECT 1 FROM 你的表名 WHERE financialscheduletype = 2);

为什么用UNION ALL而不是UNION? 因为UNION会自动去重,而我们的逻辑里两个查询的结果不可能重叠(要么返回type=2,要么返回type=0),用UNION ALL性能更好。

方案二:用CASE语句+聚合判断简化写法

如果想要更紧凑的代码,可以用CASE语句结合COUNT统计来实现:

SELECT *
FROM 你的表名
WHERE financialscheduletype = CASE 
    WHEN (SELECT COUNT(*) FROM 你的表名 WHERE financialscheduletype = 2) > 0 THEN 2
    ELSE 0
END;

这个写法的核心是先判断表中是否存在type=2的记录,再动态决定筛选条件,代码简洁易读。

针对你提供的示例数据的执行效果

你的示例表中存在多条financialscheduletype=2的数据,所以上述两种查询都会返回以下结果:

financialscheduletype | financialscheduletypevalue
2 | 05/06/2022
2 | 05/04/2022
2 | 05/07/2022
2 | 05/17/2022
2 | 05/13/2022
2 | 03/05/2011

如果你的表中没有type=2的数据,查询就会自动返回financialscheduletype=0的那行(即PROJECTED)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:32:42