查询中需根据字段 dirid 值执行不同条件:
dirid = 43 → 执行条件 1dirid = 44 → 执行条件 2SELECT
d.*,
CASE
WHEN d.D_DirectionID = 43 THEN '条件1结果' -- 或具体表达式/子查询
WHEN d.D_DirectionID = 44 THEN '条件2结果'
ELSE '默认结果'
END AS result_flag
FROM your_table d
-- 关联查询...
CASE dirid
WHEN 43 THEN 'A'
WHEN 44 THEN 'B'
ELSE 'C'
END
CASE
WHEN dirid = 43 AND status = 1 THEN 'A'
WHEN dirid = 44 OR priority > 5 THEN 'B'
WHEN dirid IN (45, 46) THEN 'C'
ELSE 'D'
END
-- 动态排序
ORDER BY
CASE WHEN dirid = 43 THEN create_time END DESC,
CASE WHEN dirid = 44 THEN priority END ASC;
-- 条件过滤
WHERE 1=1
AND (dirid = 43 AND amount > 1000
OR dirid = 44 AND amount < 500)
SELECT
COUNT(CASE WHEN dirid = 43 THEN 1 END) AS cnt_43,
COUNT(CASE WHEN dirid = 44 THEN 1 END) AS cnt_44,
SUM(CASE WHEN dirid = 43 THEN amount ELSE 0 END) AS sum_43
FROM direction_table;
| 数据库 | 支持 | 别名/变体 |
|---|---|---|
| MySQL | ✅ | IF(), IFNULL() |
| PostgreSQL | ✅ | 标准 SQL |
| Oracle | ✅ | DECODE() (旧语法) |
| SQL Server | ✅ | IIF() (2012+) |
| SQLite | ✅ | 标准 SQL |