【发布时间】:2011-12-09 16:18:08
【问题描述】:
我有一个包含广告列表的 1 表数据库。 我正在尝试获取 每个度假村 的最新广告。 我知道它可能应该是一个表数据库,但我该怎么做呢。
【问题讨论】:
我有一个包含广告列表的 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
【讨论】:
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 在同一时间被添加两次或更多,它将只占用第一行。不过我觉得还是有可能的。
【讨论】:
查看this article 以从一组项目中选择“最大”(例如,最近日期)项目。
【讨论】:
使用GROUP BY函数
SELECT MAX(dateAdded), resort, linkToUrl FROM `your_table` GROUP BY resort
【讨论】:
我认为应该这样做:
SELECT * FROM advertisements GROUP BY resort ORDER BY dateAdded DESC
【讨论】: