我有一个包含广告列表的表数据库。 我正在尝试为每个度假胜地抓取最新广告。 我知道它应该是一个表数据库,但我将如何去做。
答案 0 :(得分:3)
假设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
答案 1 :(得分: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和max的行。
一个问题是,如果在同一时间,两次或更多次添加相同的度假胜地 b ,则仅需要第一行。但我觉得有点可能。
答案 2 :(得分:1)
请查看this article,以便从一组项目中选择“最大”(例如,最近日期)项目。
答案 3 :(得分:1)
使用GROUP BY功能
SELECT MAX(dateAdded), resort, linkToUrl FROM `your_table` GROUP BY resort
答案 4 :(得分:1)
我认为应该这样做:
SELECT * FROM advertisements GROUP BY resort ORDER BY dateAdded DESC