【问题标题】:MySQL Group BY, Having, Order By QueryMySQL Group BY、Having、Order By Query
【发布时间】:2012-07-08 06:21:15
【问题描述】:

好的,假设我有以下表格:

食谱

id (pk)
name
added
modified

recipe_versions

id (pk)
recipe_id (fk to recipes.id)
version
content
added

我想要的是获取最新的recipe_versions.added 数据然后与基本recipe 数据连接的查询。然后按recipes.added ASC对所有结果进行排序我有以下,但是分组依据,没有选择最新的recipe_versions行,似乎选择了第一个。

SELECT r.`id`,
      r.name,
      rv.version,
      rv.content,
      r.added,
      r.modified,
 FROM recipes r,
      recipe_versions rv
WHERE r.`id` = rv.recipe
GROUP BY rv.recipe
HAVING max(rv.added) 
ORDER BY r.added ASC

【问题讨论】:

  • idrecipe_versions 表中是唯一的自增整数吗?如果是这样,您认为最新的added 会与recipe_id 的最新id 对应吗?

标签: mysql group-by sql-order-by having


【解决方案1】:

使用这个解决方案:

SELECT
    c.*, b.*
FROM
    (
        SELECT recipe_id, MAX(added) AS mostrecent
        FROM recipe_versions
        GROUP BY recipe_id
    ) a
INNER JOIN
    recipe_versions b ON 
        a.recipe_id = b.recipe_id AND
        a.mostrecent = b.added
INNER JOIN
    recipes c ON a.recipe_id = c.id
ORDER BY
    c.added

【讨论】:

  • 哎呀,我得想办法解决这个问题。让我试试看。
猜你喜欢
  • 2014-01-30
  • 2013-11-20
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 2021-02-22
相关资源
最近更新 更多