【问题标题】:MySQL query to get list of latest updated pages, but only one result for every slug?MySQL查询以获取最新更新页面的列表,但每个slug只有一个结果?
【发布时间】:2010-08-01 06:59:41
【问题描述】:

我有一个包含字段slug(字符串,不是唯一)和updated(日期时间)的页面表。我想根据updated 字段检索最后更新的页面列表,但我只希望每个slug 有一个结果(因为在这种情况下可以跨页面重复使用slug)。怎么办?

我试过了:

SELECT * FROM `pages`
GROUP BY `slug`
ORDER BY `updated` DESC

每个 slug 只给出一个结果,但并不总是最后更新的。

【问题讨论】:

    标签: mysql group-by


    【解决方案1】:

    这是 MSSQL - 但如果页面在完全相同的日期时间更新 2 次或更多次,则会返回“tie”。

    SELECT * FROM pages
    WHERE Updated In
    (
    SELECT Max(Updated)
    FROM pages
    GROUP BY slug
    )
    

    【讨论】:

      【解决方案2】:

      这应该适合你:

      SELECT *
      FROM pages p1
      LEFT JOIN pages p2 ON p1.slug = p2.slug AND p1.updated < p2.updated
      WHERE p2.updated IS NULL
      ORDER BY p1.updated DESC
      

      http://dev.mysql.com/doc/refman/5.1/en/example-maximum-column-group-row.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-16
        • 1970-01-01
        • 2016-01-29
        • 1970-01-01
        • 2011-04-14
        • 2014-08-22
        • 1970-01-01
        相关资源
        最近更新 更多