如何正确使用CASE语句?SQL语法错误问题求助
问题解决:PostgreSQL CASE语句语法错误
错误原因
你直接将CASE作为独立SQL语句执行,但CASE是表达式而非可单独执行的语句,PostgreSQL不允许这种写法。此外,你的CASE分支试图返回多行结果集,而CASE表达式仅支持返回单个标量值或单行记录,无法处理多行场景。
正确写法
要实现“条件满足时返回10行,否则返回1行”的需求,推荐使用UNION ALL结合条件判断:
SELECT * FROM rate WHERE 1 > 2 LIMIT 10 UNION ALL SELECT * FROM rate WHERE NOT (1 > 2) LIMIT 1;
- 当
1>2为真时,第一个查询执行并返回10行,第二个查询因条件不满足无结果 - 当
1>2为假时,第二个查询执行并返回1行,第一个查询无结果
如果你的实际条件是动态变量(比如替换1>2为真实业务条件),只需替换对应的判断逻辑即可。
内容的提问来源于stack exchange,提问作者Nirodha Wickramarathna
相关产品推荐
相关产品推荐

