SQL 使用 CASE 表达式有条件地选择行
Posted
技术标签:
【中文标题】SQL 使用 CASE 表达式有条件地选择行【英文标题】:SQL select rows conditionally using CASE expression 【发布时间】:2016-03-01 18:16:18 【问题描述】:我正在练习一些 SQL,我必须从数据库中检索 (sal+comm) > 1700 的员工的所有信息。我知道这可以通过简单的 WHERE 表达式来完成,但我们正在练习 CASE 语句,所以我们需要这样做。
我已经知道常规 CASE 如何根据其他行值分配新行值,但我不明白如何使用 CASE 表达式根据条件选择行。
这是我迄今为止所取得的成就:
SELECT
CASE
WHEN (sal+comm) > 1700 THEN empno
END AS empno
FROM emp;
我知道这是错误的,但我被困在这里。任何帮助或任何搜索和阅读的资源将不胜感激,谢谢!
【问题讨论】:
【参考方案1】:SELECT *
FROM emp
WHERE (CASE WHEN (sal+comm) > 1700 THEN 1
ELSE 0
END) = 1
【讨论】:
【参考方案2】:CASE
语句将产生一个结果,您可以比较它或将其用于其他操作。
在这种情况下,工资取决于 emp.job
SELECT *
FROM emp
WHERE CASE WHEN emp.job = 'DEVELOPER' THEN salary*1.5
WHEN emp.job = 'DB' THEN salary*2
END > 1700
解决你的情况有点过头了,但我想你可以包括其他情况。
SELECT *
FROM emp
WHERE CASE WHEN sal+comm > 1700 THEN 1
ELSE 0
END > 0
【讨论】:
【参考方案3】:你想要一个 WHERE 子句。
SELECT empNo
FROM emp
WHERE sal+comm > 1700
【讨论】:
@Elias 特意说在简单的WHERE
子句中他知道怎么做,但是想用CASE
来练习以上是关于SQL 使用 CASE 表达式有条件地选择行的主要内容,如果未能解决你的问题,请参考以下文章