首先,我正在使用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/