考虑以下两个查询:
SELECT *, 'b' AS b FROM someTable ORDER BY a ASC LIMIT 1;
SELECT *, MAX(a) AS maxA FROM someTable ORDER BY a ASC LIMIT 1;
a
正如预期的那样,前一个查询返回具有最低值的行。后一个查询返回存储在磁盘上的第一行(通常是主键值最低的行)。我该如何解决这个问题?我的意图是获得最低的列的整行a
值(如果有多个我只需要一个,那无所谓),另外我确实需要最高年龄的值。在一个完美的世界里,我会运行两个查询,但是由于对象在这个应用程序中的序列化方式,如果不重构很多不属于我的代码,我就无法做到这一点。我实际上不介意 MySQL 引擎本身是否必须查询两次,重要的是输出在一行中返回。不幸的是,我无法为此查询编写存储过程。是的,*
运营商很重要,我无法列出所需的字段。而且行数太多,无法全部归还!
请注意,这个问题表面上与上一个问题相似,但是那里提出的问题格式不正确且模棱两可,因此所有答案都解决了我不打算解决的问题(无论多么有用,我确实学到了很多东西,我很高兴结果是这样)。这个问题更清楚地提出了预期的问题,因此应该吸引不同的答案。