您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關mysql排序的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
使用SELECT抽取數據時,數據的顯示是無序的,想要得到有序的數據,那么我們就需要使用ORDER BY子句進行排序。
ORDED BY 子句語法:
SELECT <列1>,<列2>,<列3>,......
FROM <表名>
ORDER BY <排序基準1>,<排序基準2>,.....
ORDED BY 子句(商品的銷售單價升序排列)
其中desc表示降序,asc表示升序排列。
示例:
這里先創建一張普通的表
CREATE TABLE `test1` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `date_time` datetime NOT NULL, `status` int(5) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
再添加一些測試數據
INSERT INTO `test1` VALUES (NULL, '測試1', '2018-03-05 11:09:00', 1),(NULL, '測試2', '2018-03-06 11:09:00', 1),(NULL, 'abc', '2018-03-07 11:09:00', 1), (NULL, 'def', '2018-04-08 11:09:00', 2),(NULL, '李某某', '2018-04-17 11:09:00', 1),(NULL, '飯某某', '2018-04-20 13:09:00', 2), (NULL, '趙', '2018-04-20 01:09:00', 4),(NULL, '倩', '2018-04-28 11:09:00', 2),(NULL, 'andy', '2018-04-30 11:09:00', 1), (NULL, 'tony', '2018-05-08 11:09:00', 4),(NULL, 'tom', '2018-05-07 11:09:00', 3),(NULL, 'bill', '2018-05-18 11:09:00', 3), (NULL, 'james', '2018-06-07 11:09:00', 4),(NULL, 'anthony', '2018-06-18 11:09:00', 2),(NULL, '蓋茨', '2018-04-21 11:09:00', 1), (NULL, '部長', '2018-04-24 11:09:00', 4),(NULL, '李總', '2018-04-20 11:09:00', 5),(NULL, '張總', '2018-04-29 11:09:00', 2), (NULL, '王總', '2018-04-19 11:09:00', 3),(NULL, '唐總', '2018-05-01 11:09:00', 2);
有了數據,開始針對這些數據,做一些排序:
1、單列排序
SELECT * FROM test1 ORDER BY date_time
默認升序,降序后面接"DESC"即可。
2、多列排序
SELECT * FROM test1 ORDER BY `status`, date_time DESC
首先按`status`字段排序,若`status`相等,則按data_time排序。
3、自定義排序
SELECT * FROM test1 ORDER BY FIELD(`status`, 3, 2, 4, 1, 5), date_time DESC
使用"FIELD()"函數,可指定順序。
4、其他條件排序
先按大于等于當前時間升序,再按小于當前時間降序,支持分頁。
SELECT * FROM test1 ORDER BY date_time < NOW(), IF(date_time < NOW(), 0, date_time), date_time DESC
關于mysql排序的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。