【发布时间】:2013-06-26 11:09:40
【问题描述】:
我有下表
表结构:
CREATE TABLE IF NOT EXISTS `people` (
`name` varchar(10) NOT NULL,
`age` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
插入一些值:
INSERT INTO `people` (`name`, `age`) VALUES
('bob', 13),
('john', 25),
('steve', 8),
('sue', 13);
执行的查询:
SELECT MAX( `age` ) , `name` FROM `people` WHERE 1
预期结果:
25, John
生成的结果
25, bob
我们可以通过使用这个查询来实现这一点
SELECT `age`, `name` FROM `people` ORDER BY age DESC LIMIT 1
问题1:我在这里犯了什么错误,为什么这个MAX函数没有返回相关的行信息?
问题2:用MAX函数还是ORDER BY子句哪个好用?
【问题讨论】:
-
对于这个简单的例子,答案显然是 ORDER BY。对于更复杂的问题 - 所谓的 GROUPWISE MAX 查询,这是一个常见问题解答,并且已经提供了无数答案。
标签: mysql performance