我有一张这样的表:
类型名称每隔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 ;
答案 0 :(得分:2)
您可以通过使用相关子查询过滤where
子句来完成此操作:
SELECT name, type, datetime
FROM table t
WHERE datetime = (select max(datetime)
from table t2
where t.type = t2.type
)
对于每种类型,子查询返回最大值datetime
。将返回与其类型的最大值匹配的行。