MySQL查询以获取最新更新页面的列表,但每个slug只能得到一个结果?

MySQL查询以获取最新更新页面的列表,但每个slug只能得到一个结果?,mysql,group-by,Mysql,Group By,我有一个包含slug(字符串,非唯一)和updated(日期时间)字段的页面表。我想根据updated字段检索最近更新的页面列表,但我只希望每个slug都有一个结果(因为在这种情况下slug可以跨页面重复使用)。怎么办 我试过这个: SELECT * FROM `pages` GROUP BY `slug` ORDER BY `updated` DESC 这样每个slug只会给出一个结果,但并不总是最后更新的结果。这应该适合您: SELECT * FROM pages p1 LEFT JOIN

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

我试过这个:

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

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

这应该适合您:

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
选择*
摘自第p1页
p1.slug=p2.slug和p1.updated

请参阅。

这应该适合您:

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
选择*
摘自第p1页
p1.slug=p2.slug和p1.updated

请参阅。

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

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

这是MSSQL-但是如果一个页面在完全相同的日期时间更新了2次或更多次,则将返回“ties”

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