vol*_*ing 4 mysql sql case-statement
我有一个像下面的查询结构,我想知道是否有办法将选择查询写为一个使用CASE语句或通过其他方式,以便值根据其值插入适当的变量.
DECLARE passes INT;
DECLARE fails INT;
..
SELECT count(score)
INTO passes
FROM scores
WHERE score >= 40;
SELECT count(score)
INTO fails
FROM scores
WHERE score < 40;
Run Code Online (Sandbox Code Playgroud)
默多克想出了一个解决这个问题的简洁方法,我只需对其进行一次修改就可以将每个值放入各自的变量中
SELECT *
INTO passes, fails
FROM (SELECT SUM(CASE
WHEN score >= 40 THEN 1
ELSE 0
END) AS _passes,
SUM(CASE
WHEN score < 40 THEN 1
ELSE 0
END) AS _fails
FROM scores) AS x;
Run Code Online (Sandbox Code Playgroud)
你可以通过为每个得分做一个案例并返回1或0来做到这一点.然后将整个事物包装在SUM(不是COUNT)中,实际上为每个匹配案例的实例添加一个.
SELECT
SUM(CASE WHEN score >= 40 THEN 1 ELSE 0 END) AS passes,
SUM(CASE WHEN score < 40 THEN 1 ELSE 0 END) AS fails
FROM scores
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24013 次 |
| 最近记录: |