MySQL按最新更新时间选择重复数据

时间:2015-05-12 05:40:16

标签: mysql sql

我有一个关于mysql查询的问题。 所以这就是问题所在。 我有这种结构的表格。

categoryName | checkinDate | checkoutDate | roomPrice | roomService | insertTime.         | updateTime
cat1         | 2015-05-12  | 2015-05-13   | 300,000   | breakfast   | 2015-05-13 12:33:21 | 0-0-0 00:00:00
cat1         | 2015-05-12  | 2015-05-13   | 320,000   | wifi        | 2015-05-13 12:33:22 | 0-0-0 00:00:00  
cat1         | 2015-05-12  | 2015-05-13   | 350,000   | breakfast   | 2015-05-13 12:33:22 | 2015-05-13 12:36:12    
cat1         | 2015-05-12  | 2015-05-13   | 390,000   | wifi        | 2015-05-13 12:33:22 | 2015-05-13 12:36:33

如何获取最新更新的数据:

cat1 | 2015-05-12 | 2015-05-13 | 320,000 | breakfast | 2015-05-13 12:33:22 | 2015-05-13 12:36:12    
cat1 | 2015-05-12 | 2015-05-13 | 320,000 | wifi      | 2015-05-13 12:33:22 | 2015-05-13 12:36:33

但需要注意的是,最新更新的cat1的最新列表并不总是与之前更新的cat1相同。

我怎样才能做到这一点。

我试过这个问题:

SELECT DISTINCT * 
FROM   mytable 
WHERE  hotel_id = 1 

SELECT * 
FROM   mytable 
WHERE  hotel_id=1 
AND    in 
       ( 
              select max(updatetime) 
              FROM   mytable)

但不幸的是,他们两个都没有达到我的要求。

任何想法的人? 提前谢谢......

2 个答案:

答案 0 :(得分:1)

试试这个..

SELECT t1.* 
FROM   table t1 
       LEFT JOIN table t2 
              ON t2.categoryname = t1.categoryname 
                 AND t2.roomservice = t1.roomservice 
                 AND t2.updatetime > t1.updatetime 
WHERE  t2.categoryname IS NULL 

答案 1 :(得分:-1)

试试这个:

SELECT
   categoryName,
   checkinDate,
   checkoutDate,
   roomPrice,
   roomService,
   insertTime,
   updateTime 
FROM   mytable
WHERE  hotel_id=1 
   AND updateTime IS NOT NULL
ORDER BY updatetime ASC