【发布时间】:2013-07-05 17:55:44
【问题描述】:
在这里我创建了一些表来测试:
CREATE TABLE IF NOT EXISTS `test` (
`index` varchar(255) NOT NULL,
`index2` varchar(255) NOT NULL,
`date` date NOT NULL,
`somenumber` int(10) NOT NULL,
PRIMARY KEY (`index`,`index2`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `test` (`index`, `index2`, `date`, `somenumber`) VALUES
('kevin', 'little', '2013-06-11', 1),
('kevin', 'little', '2013-07-03', 5),
('maria', 'smith', '2013-07-01', 3),
('martin', 'luther', '2013-07-04', 13),
('martin', 'luther', '2013-07-05', 14);
现在我想为大家获取最新的somenumber,由somenumber DESC 订购。这是我的尝试:
SELECT * FROM `test` GROUP BY `index`, `index2` ORDER BY `somenumber` DESC
问题是这个查询总是为每个组取一个 somenumber,但它并不总是最新的。
(我知道索引名在这里没有太大意义,但我认为这将是一个比使用随机数索引更容易阅读的示例)
【问题讨论】:
-
如果你想插入最新的记录,不要把它留为
ORDER BY somenumber; -
你的意思是最新的日期?
-
是的,我想要
date行定义“最新”的每个人的最新号码。
标签: mysql sql greatest-n-per-group