如何对mysql中的别名求和

如何对mysql中的别名求和,mysql,Mysql,我有一个mysql问题,将两列相加,以便对表进行排序 SELECT distinct mycall, sm, mm, SUM(IF(sm != '', 1,0)) AS 'a_lake', SUM(IF(mm != '', 1,0)) AS 'w_lake' FROM ss_log WHERE conf = '1' GROUP BY `mycall` ORDER BY `ss_log`.`mycall` DESC 这个sql工作得很好,给了我'mycall'、'a_lak

我有一个mysql问题,将两列相加,以便对表进行排序

SELECT distinct mycall, sm, mm, SUM(IF(sm != '', 1,0)) AS 'a_lake',
       SUM(IF(mm != '', 1,0)) AS 'w_lake' 
FROM ss_log 
WHERE conf = '1' 
GROUP BY `mycall` 
ORDER BY `ss_log`.`mycall` DESC
这个sql工作得很好,给了我'mycall'、'a_lake'和'w_lake',但我需要根据('a_lake'+'w_lake')对输出进行排序,这是总分

已尝试别名和子查询,但不起作用或仅给出一行作为答案

有什么想法吗?

使用:

ORDER BY a_lake + w_lake DESC, `ss_log`.`mycall` DESC

你能试试这个吗

SELECT
*,
a_lake+w_lake AS TotalScore
FROM
(
SELECT distinct mycall, sm, mm, SUM(IF(sm != '', 1,0)) AS 'a_lake', SUM(IF(mm != '', 1,0)) AS 'w_lake' FROM ss_log WHERE conf = '1' GROUP BY mycall 
) AS A
ORDER BY a_lake+w_lake DESC
请尝试此查询

SELECT distinct mycall, sm, mm, SUM(IF(sm != '', 1,0)) + SUM(IF(mm != '', 1,0)) AS 'sum' 
FROM ss_log 
WHERE conf = '1' 
GROUP BY `mycall` 
ORDER BY `ss_log`.`mycall` DESC 

是的,但这将成为一个与任何其他RDBMS风格不兼容的查询,因为并非所有RDBMS都像MySQL一样提供这样的扩展。使用子查询并访问外部查询中的别名列。见@Sandesh的答案