我在这里有一个查询,我收到一个错误,别名显示未知列,这有什么问题。我需要获得 16_judge_61 、 16_judge_62 、 16_judge_63 的总和
SELECT s.contestant_number, c.contestant_name, j.judge_name,
SUM(CASE WHEN s.crit_id =17 AND s.judge_id = '61' THEN score END ) AS 16_judge_61,
SUM(CASE WHEN s.crit_id =17 AND s.judge_id = '62' THEN score END ) AS 16_judge_62,
SUM(CASE WHEN s.crit_id =17 AND s.judge_id = '63' THEN score END ) AS 16_judge_63,
(16_judge_61 + 16_judge_62 + 16_judge_63) as total //<--here is the problem
//<--i also tried (sum(16_judge_61) + sum(16_judge_62) + sum(16_judge_63))as total not working as well
FROM tbl_score s INNER JOIN tbl_contestant c ON s.contestant_number = c.contestant_number
INNER JOIN tbl_judges j ON j.judge_id = s.judge_id
WHERE c.gender = 'male'
AND c.con_id = s.con_id
AND j.judge_id =62
GROUP BY s.contestant_number
最佳答案
您的错误是由于尝试在定义别名的同一 SELECT
子句中使用别名而导致的。您不能执行此操作,因为尚未计算别名。
对此问题的下意识 react 是将 16_judge_61
、16_judge_62
和 16_judge_63 的三个
。但您可以通过认识到可以使用 CASE
语句加在一起WHERE IN
作为三个 judge_id
值将这三个条件组合成一个 CASE
语句来对此进行改进。
尝试这个查询:
SELECT s.contestant_number,
c.contestant_name,
j.judge_name,
SUM(CASE WHEN s.crit_id = 17 AND s.judge_id IN (61,62,63)
THEN score END ) AS total
FROM ...
关于MySQL : How to get the sum columns by name of alias,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39436692/