MySQL在1个表上进行多个LIMIT 1查询

时间:2013-05-27 14:33:54

标签: mysql

我有一张这样的表:

  • ID
  • 姓名
  • type - enum(A,B,C)
  • 日期时间

类型名称每隔X天更改一次。我想获得姓氏并用1个MySQL查询修改日期。

所以这个查询:

SELECT name, type, datetime 
FROM table WHERE type = A
ORDER BY datetime DESC LIMIT 1

但是,对于每个类型1,查询必须返回3行。我尝试使用union来执行此操作,但这给了我关于order by语句的错误。我无法弄清楚如何解决这个问题。

任何人都可以帮助我吗?

提前致谢。

编辑:

CREATE TABLE IF NOT EXISTS `table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` int(11) NOT NULL,
`datetime` datetime NOT NULL,
`type` enum('a','b','c') NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

1 个答案:

答案 0 :(得分:2)

您可以通过使用相关子查询过滤where子句来完成此操作:

SELECT name, type, datetime 
FROM table t
WHERE datetime = (select max(datetime)
                  from table t2
                  where t.type = t2.type
                 )

对于每种类型,子查询返回最大值datetime。将返回与其类型的最大值匹配的行。