【问题标题】:Select the latest MySQL Data but unique resort选择最新的 MySQL 数据但独特的手段
【发布时间】:2011-12-09 16:18:08
【问题描述】:

我有一个包含广告列表的 1 表数据库。 我正在尝试获取 每个度假村最新广告。 我知道它可能应该是一个表数据库,但我该怎么做呢。

【问题讨论】:

    标签: php mysql sql resultset


    【解决方案1】:

    假设 Id 列是唯一的:

    SELECT T3.*
    FROM yourtable AS T3
    JOIN
    (
        SELECT T2.resort, T2.date_added, MAX(T2.id) AS id
        FROM yourtable AS T2
        JOIN
        (
            SELECT resort, MAX(date_added) AS date_added
            FROM yourtable
            GROUP BY resort
        ) AS T1
        ON T1.resort = T2.resort AND T1.date_added = T2.date_added
        GROUP BY T2.resort, T2.date_added
    ) AS T4
    ON T4.id = T3.id
    

    【讨论】:

    • Downvoter:你能告诉我哪里出了问题,而不是仅仅投反对票吗?我很乐意纠正错误。
    • 我也很好奇,您甚至会同时查看添加的条目..这使您的答案正确。
    【解决方案2】:
    select t.*
    from YourTable t
    join
        (select resort, max(dateAdded) dateAdded
        from YourTable
        group by resort) m on t.dateAdded = m.dateAdded and t.resort = m.resort
    order by t.resort
    

    首先通过手段对行进行分组以找到 dateAdded 的最大值,然后查询(连接)具有与最大值相同的 dateAdded 的行。
    一个问题是,如果相同的手段 b 在同一时间被添加两次或更多,它将只占用第一行。不过我觉得还是有可能的。

    【讨论】:

      【解决方案3】:

      查看this article 以从一组项目中选择“最大”(例如,最近日期)项目。

      【讨论】:

        【解决方案4】:

        使用GROUP BY函数

        SELECT MAX(dateAdded), resort, linkToUrl FROM `your_table` GROUP BY resort
        

        【讨论】:

          【解决方案5】:

          我认为应该这样做:

          SELECT * FROM advertisements GROUP BY resort ORDER BY dateAdded DESC
          

          【讨论】:

            猜你喜欢
            • 2021-09-01
            • 2023-01-26
            • 1970-01-01
            • 2013-03-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多