MySQL获取每个位置的最后结果

MySQL获取每个位置的最后结果,mysql,select,where,greatest-n-per-group,Mysql,Select,Where,Greatest N Per Group,我有3个问题: SELECT `update`.`id` AS `id`, `update`.`type` AS `type`, `update`.`date` AS `date`, `update`.`like` AS `like`, `update`.`dislike` AS `dislike` FROM `updates` AS `update` WHERE `type` = '1' ORDER BY `date` DESC LIMIT 1 SELECT `update`.`id` AS

我有3个问题:

SELECT `update`.`id` AS `id`, `update`.`type` AS `type`, `update`.`date` AS `date`, `update`.`like` AS `like`, `update`.`dislike` AS `dislike` FROM `updates` AS `update` WHERE `type` = '1' ORDER BY `date` DESC LIMIT 1

SELECT `update`.`id` AS `id`, `update`.`type` AS `type`, `update`.`date` AS `date`, `update`.`like` AS `like`, `update`.`dislike` AS `dislike` FROM `updates` AS `update` WHERE `type` = '2' ORDER BY `date` DESC LIMIT 1 (1)

SELECT `update`.`id` AS `id`, `update`.`type` AS `type`, `update`.`date` AS `date`, `update`.`like` AS `like`, `update`.`dislike` AS `dislike` FROM `updates` AS `update` WHERE `type` = '3' ORDER BY `date` DESC LIMIT 1 (1)
我需要得到每种类型的最后日期。如何在一个查询中获得它

谢谢。

这一定是最常见的mysql问题

SELECT u1.id, u1.type, u1.date, u1.like, u1.dislike
from updates u1
inner join
(
   select type, max(date) as mdate
   from updates
   group by type
) u2 on u2.type = u1.type 
     and u2.mdate = u1.date
SELECT u.*
FROM update u
JOIN (SELECT type, MAX(date) maxdate
      FROM update
      WHERE type in ('1', '2', '3')
      GROUP BY type) m
ON u.type = m.type AND u.date = m.maxdate
这一定是最常见的mysql问题

SELECT u.*
FROM update u
JOIN (SELECT type, MAX(date) maxdate
      FROM update
      WHERE type in ('1', '2', '3')
      GROUP BY type) m
ON u.type = m.type AND u.date = m.maxdate

此查询可能返回三行以上。如果不保证
(type,date)
是唯一的,则此查询可以为特定类型返回多行。@spencer7593由于问题没有指定在可能具有相同日期的行中进行选择的条件,因此我假设它们是唯一的<代码>按类型分组,日期可以添加到查询中以删除重复项,但其他列可以从不同的行中随机选择。@Barmar谢谢。超级的。我使用Kohana ORM,不能在JOIN中使用构造。它能更简单吗?我简化了外部构造,但无法对内部进行相同的构造:(您可以使用spencer7593中的联合解决方案,但它需要了解所有类型,以便列出所有子查询。无法简化此联接,这是一种常见的习惯用法,用于获取每个组中某列的最大值或最小值的行。此查询可能返回三行以上。如果没有保证t
(类型、日期)
是唯一的,对于特定类型,此查询可以返回多行。@spencer7593因为问题没有指定在可能具有相同日期的行中进行选择的条件,所以我假设这些行是唯一的。
按类型分组,日期
可以添加到查询中以删除重复项,尽管其他列也可以被删除从不同的行中随机选择。@Barmar谢谢。超级。我使用Kohana ORM,不能在联接中使用构造。它能更简单吗?我使外部构造更简单,但不能对内部进行同样的构造:(您可以使用spencer7593中的联合解决方案,但它需要知道所有类型,以便您可以列出所有子查询。无法简化此联接,这是获取每个组中某列的最大值或最小值的行的常用习惯用法。