是否可以在MySQL中编写自定义ORDER BY语句
我的意思是,我有这样的数据库,
id time day
1 1:55 Mon
2 2:00 Sun
3 1:00 Mon
4 3:00 Tue
5 2:30 Sun
我可以写这样的订单声明,
SELECT * FROM mytable ORDER BY day
但是可以编写查询以将 Sun 作为第一个, Tue 作为第二个,周一作为第三个
这是错误的,但是喜欢这个查询:
SELECT * FROM mytable ORDER BY Sun, Tue, Mon
答案 0 :(得分:2)
可能
SELECT * FROM mytable ORDER BY FIELD(day, Sun, Tue, Mon)
答案 1 :(得分:1)
假设day
是VARCHAR
,您可以写一个冗长的CASE WHEN
语句:
SELECT *
FROM <table>
ORDER BY CASE day
WHEN 'Sun' THEN 1
WHEN 'Mon' THEN 2
WHEN 'Tue' THEN 3
WHEN 'Wed' THEN 4
WHEN 'Thu' THEN 5
WHEN 'Fri' THEN 6
WHEN 'Sat' THEN 7
ELSE 0
END
答案 2 :(得分:0)
来自arilia的评论是mysql的最佳方式。对于更便携的sql尝试
order by day = 'sat', day = 'Fri'
继续其余的日子。这适用于所有数据库
答案 3 :(得分:0)
试试这个Check
SELECT * FROM table ORDER BY FIELD(day, Sun, Tue, Mon,Tue,Wed,Thu,Fri,Sat)
答案 4 :(得分:0)
您可以使用Mysql的自定义订单查询,如下所示:
SELECT * FROM mytable ORDER BY FIELD(day, 'Sun', 'Tue', 'Mon')
有关详细信息,请参阅文档:http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_field