从表中获取最新的两个不同位置
Posted
技术标签:
【中文标题】从表中获取最新的两个不同位置【英文标题】:Get latest two distinct location from table 【发布时间】:2016-05-25 07:38:07 【问题描述】:下面是我的桌子,
SELECT DISTINCT(availability_location) as location FROM table_name WHERE user_id = '8' ORDER BY availability_date DESC LIMIT 2
我得到以下结果
我想要以下结果:
2016-05-27 浦那
2016-05-20 伯班克
即唯一的availability_location
以及最新的两个条目。
【问题讨论】:
【参考方案1】:您必须为此使用GROUP BY
:
SELECT availability_location as location,
MAX(availability_date) AS max_date
FROM table_name
WHERE user_id = '8'
GROUP BY location
ORDER BY max_date DESC LIMIT 2
【讨论】:
我猜我还行。第一条记录是“2016-05-27”,位置为“Pune”,但在 DB 中“2016-05-27”的日期位置是“pune” 看看情况——“Pune”和“pune”。我期待“pune”,因为它的日期是“2016-05-27”,但得到“Pune” @AP。这是因为您使用的排序规则:Pune
和 pune
是同一件事。【参考方案2】:
您可以使用GROUP BY
并在最大日期之前订购:
SELECT t.availability_location
FROM table_name t
WHERE user_id = '8'
GROUP BY t.availability_location
ORDER BY max(s.availability_date) DESC LIMIT 2
输出:
availability_location
---------------------
pune
Burbank
编辑:下一次,您应该提到您希望它区分大小写。您可以尝试这样做:
SELECT t.availability_location
FROM table_name t
INNER JOIN(SELECT s.availability_location , max(s.availability_date) as max_d
FROM table_name s
WHERE s.user_id = '8'
GROUP BY s.availability_location) t2
ON(t2.availability_location = t.availability_location AND
t2.max_d = t.availability_date)
ORDER BY t.availability_date DESC LIMIT 2
【讨论】:
这个查询给出了 Pune 和 Burbank。我以“Pune”为位置获得第一条记录为“2016-05-27”但在数据库中“2016-05-27”的日期位置为“pune” @AP。现在试试,不确定是否可以将它们分开显示,因为它们可能在同一个排序规则中 我说的是第二个,应该区分大小写@ap。以上是关于从表中获取最新的两个不同位置的主要内容,如果未能解决你的问题,请参考以下文章
如何从两个不同的、不相关的表中获取最新的行,并将它们合并到一个结果集中?