Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:如何按别名的名称获取和列_Mysql_Sql - Fatal编程技术网

MySQL:如何按别名的名称获取和列

MySQL:如何按别名的名称获取和列,mysql,sql,Mysql,Sql,我这里有一个查询我得到了一个错误别名说未知列,这有什么问题。我需要得到16个法官61,16个法官62,16个法官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_

我这里有一个查询我得到了一个错误别名说未知列,这有什么问题。我需要得到16个法官61,16个法官62,16个法官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
选择s.选手编号、c.选手姓名、j.评委姓名、,
求和(当s.crit_id=17,s.judge_id=61,则得分结束)为16_judge_61,
求和(当s.crit_id=17,s.judge_id=62,则得分结束)为16_judge_62,
求和(当s.crit_id=17,s.judge_id=63,则得分结束)为16_judge_63,

(16_judge_61+16_judge_62+16_judge_63)总计/不确定您为什么使用SUM(CASE…)


您可以使用子查询,如下所示:

SELECT *, (16_judge_61+16_judge_62+16_judge_63) AS total FROM (

-------------Your wholequery----------------

) t

您的错误是由于尝试在定义别名的同一
SELECT
子句中使用别名而导致的。无法执行此操作,因为尚未计算别名

对这个问题的下意识反应是将
16\u judge\u 61
16\u judge\u 62
16\u judge\u 63
的三个
CASE
语句相加。但是,您可以通过使用三个
判断id
值的
WHERE IN
将这三个条件组合成一个
案例
语句来改进这一点

请尝试以下查询:

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 ...

尝试删除案例陈述中的SUM,然后将SUM添加到(16_judge+…)
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 ...