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

如何编写SQL查询仅返回符合指定条件的有效结果

正确SQL写法:仅返回符合指定条件的结果

直接使用WHERE子句过滤目标行,配合CASE计算Total即可解决问题,以下是具体实现:

通用SQL写法(常量X)

SELECT 
    Balance,
    RateCol,
    CASE
        WHEN Balance > 0 AND RateCol > 2.25 THEN Balance
        WHEN Balance > 2000000000 AND RateCol <= 2.25 THEN Balance - 2000000000
    END AS Total
FROM 
    your_table_name -- 替换为你的表名
WHERE 
    -- 仅保留符合两个条件之一的行
    (Balance > 0 AND RateCol > 2.25)
    OR 
    (Balance > 2000000000 AND RateCol <= 2.25);

支持变量的写法(以MySQL/SQL Server为例)

如果需要灵活修改X的值,可以使用变量:

MySQL

SET @X = 2.25;

SELECT 
    Balance,
    RateCol,
    CASE
        WHEN Balance > 0 AND RateCol > @X THEN Balance
        WHEN Balance > 2000000000 AND RateCol <= @X THEN Balance - 2000000000
    END AS Total
FROM 
    your_table_name
WHERE 
    (Balance > 0 AND RateCol > @X)
    OR 
    (Balance > 2000000000 AND RateCol <= @X);

SQL Server

DECLARE @X DECIMAL(5,2) = 2.25;

SELECT 
    Balance,
    RateCol,
    CASE
        WHEN Balance > 0 AND RateCol > @X THEN Balance
        WHEN Balance > 2000000000 AND RateCol <= @X THEN Balance - 2000000000
    END AS Total
FROM 
    your_table_name
WHERE 
    (Balance > 0 AND RateCol > @X)
    OR 
    (Balance > 2000000000 AND RateCol <= @X);

问题原因说明

  1. 仅用CASE出现NULL行:CASE只会为符合条件的行计算Total,不符合条件的行Total默认返回NULL,但WHERE未过滤这些行,导致结果包含无效记录。
  2. WHERE中用CASE报错:CASE是返回单个值的表达式,无法直接作为布尔条件使用。WHERE子句需要的是布尔逻辑组合(AND/OR连接的条件),而非值判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:14:57