简体   繁体   中英

Get latest two distinct location from table

Below is my table,

在此处输入图片说明

SELECT DISTINCT(availability_location) as location FROM table_name WHERE user_id = '8' ORDER BY availability_date DESC LIMIT 2

I'm getting following result

在此处输入图片说明

I want following result :

2016-05-27 pune

2016-05-20 Burbank

ie Unique availability_location as well as latest two entries.

You have to use GROUP BY for this:

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

You can use GROUP BY and order by the max date :

 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

Output :

availability_location
---------------------
pune
Burbank

EDIT: next time, you should mention that you want it to be case sensitive. You can try doing it like this:

 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM