如何对mysql中的别名求和
我有一个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
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的答案