首先,我正在使用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”更改为应具有的等效名称。

怎么可能?

最佳答案

仅对字符串和日期常量使用单引号-禁止对列别名使用单引号。所以:

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;


也更容易打字。

关于mysql - 使用“订购依据和限制1”获得最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49261813/

10-11 05:00