首先,我正在使用MySQL。当我进行以下查询时:
SELECT CodE,sum(tiempo) AS 'tiempo total'
FROM Participa
GROUP BY CodE
ORDER BY 'tiempo total' DESC LIMIT 1;
它显示了我表格的第一行而不是MAX值。但是,如果我进行以下查询:
SELECT CodE,sum(tiempo)
FROM Participa
GROUP BY CodE
ORDER BY 2 DESC LIMIT 1
我得到了正确的结果。 我刚刚更改了别名'tiempo total',因为它应该是等价的。
怎么可能?
答案 0 :(得分:0)
仅对字符串和日期常量使用单引号 - 永远不会对列别名使用。所以:
SELECT CodE, sum(tiempo) AS `tiempo total`
FROM Participa
GROUP BY CodE
ORDER BY `tiempo total` DESC
LIMIT 1;
您按常量字符串排序,而不是列名称。因此,如果您在查询中获得最大值,那将是一次完全意外。
注意:您可以通过提供永远不需要转义的列名来解决这些问题:
SELECT CodE, sum(tiempo) AS tiempo_total
FROM Participa
GROUP BY CodE
ORDER BY tiempo_total DESC
LIMIT 1;
也更容易打字。