SQL按2个条件排序

时间:2018-12-04 21:11:07

标签: mysql sql date select

假设我有一个数据库,看起来像这样:

price      date       hour
12.00    2018-12-11    5
13.00    2018-12-04    2
14.00    2018-12-06    1 
15.00    2018-12-11    1
16.00    2018-12-04    6
17.00    2018-12-06    10

我需要按日期排序,如果小时后的几天相同,那么结果应该是:

   price      date       hour
    13.00    2018-12-04    2
    16.00    2018-12-04    6
    14.00    2018-12-06    1
    17.00    2018-12-06    10
    15.00    2018-12-11    1
    12.00    2018-12-11    5

我试图编写一个简单的查询,但是它不能考虑两个条件,一个接一个:

SELECT price, date, hour
FROM table
WHERE date BETWEEN '2018-12-04' AND '2018-12-11'
ORDER BY date, hour

有人可以帮助解决这个问题吗?

谢谢所有!

2 个答案:

答案 0 :(得分:2)

我能想到的唯一真正的问题是,hour是否存储为字符串。如果是这样,请使用隐式转换:

SELECT price, date, hour
FROM table
WHERE date BETWEEN '2018-12-04' AND '2018-12-11'
ORDER BY date, hour + 0;

答案 1 :(得分:0)

一个简单的ORDER BY就足够了:

select * from my_table order by `date`, hour;

请注意,date通常是保留字,因此不鼓励使用它,并且需要用引号引起来。