1

我有一张这样的桌子:

  • ID
  • 姓名
  • 类型 - 枚举(A,B,C)
  • 约会时间

类型的名称每 X 天更改一次。我想通过 1 个 MySQL 查询获取姓氏并修改日期。

所以这个查询:

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

但是查询必须为每种类型 1 返回 3 行。我尝试使用联合来执行此操作,但这给了我关于 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 ;
4

1 回答 1

2

where您可以通过在具有相关子查询的子句中过滤来做到这一点:

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

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

于 2013-05-27T14:37:38.223 回答