|
作者:老王
问题大致是这样的:
CREATE TABLE `a` (
`id` int(11) NOT NULL auto_increment,
`tid` int(11) default NULL,
`status` int(11) default NULL,
PRIMARY KEY (`id`)
) ;
INSERT INTO `a` (`id`, `tid`, `status`) VALUES
(1, 1, 1),
(2, 1, 2),
(3, 1, 3),
(4, 1, 4),
(5, 2, 1),
(6, 2, 2);
按照tid分组,每组里找其中status最大的那一行.例如符合条件的应该为:
414
622
我给出的SQL语句是:
SELECT * FROM a AS b WHERE status = (SELECT MAX(status) FROM a WHERE tid = b.tid)
应该还有别的写法,大家如果知道,请留言给我。
网友提供的方法:
SELECT * FROM a WHERE (tid, status) IN (SELECT tid, MAX(status) FROM a GROUP BY tid)
附录:
刚才在MySQL官方文档里看到了这个问题的解释,链接
参考:
http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#subqueries
http://dev.mysql.com/doc/refman/5.1/zh/functions.html#group-by-functions |
|