MySQL:条件ORDER BY只有一列
作者:互联网
您好,感谢您花时间阅读此问题.
我正在使用MySQL,我想使用ORDER BY将结果排序到一个特定列,但结果必须根据特定条件对此列进行排序.例如,在下表中,我想ORDER BY’group’,首先显示9,7,6’组’项目,最后显示10,8,5’组’项目:
names group
--------- ------
susanita 10
miguelito 5
mafalda 7
manolito 8
libertad 6
felipe 9
guille 8
提前致谢.
解决方法:
SELECT* FROM mytable ORDER BY
LOCATE(CONCAT('.',`group`,'.'),'.9.7.6.10.8.5.');
我拿了你的样本数据,把它加载到名为mytable的表中并运行它.
结果如下:
mysql> use test
Database changed
mysql> drop table if exists mytable;
Query OK, 0 rows affected (0.04 sec)
mysql> create table mytable
-> (
-> names varchar(10),
-> `group` int
-> );
Query OK, 0 rows affected (0.08 sec)
mysql> insert into mytable values
-> ('susanita', 10),
-> ('miguelito', 5),
-> ('mafalda', 7),
-> ('manolito', 8),
-> ('libertad', 6),
-> ('felipe', 9),
-> ('guille', 8);
Query OK, 7 rows affected (0.09 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM mytable;
+-----------+-------+
| names | group |
+-----------+-------+
| susanita | 10 |
| miguelito | 5 |
| mafalda | 7 |
| manolito | 8 |
| libertad | 6 |
| felipe | 9 |
| guille | 8 |
+-----------+-------+
7 rows in set (0.00 sec)
mysql> SELECT * FROM mytable ORDER BY
-> LOCATE(CONCAT('.',`group`,'.'),'.9.7.6.10.8.5.');
+-----------+-------+
| names | group |
+-----------+-------+
| felipe | 9 |
| mafalda | 7 |
| libertad | 6 |
| susanita | 10 |
| manolito | 8 |
| guille | 8 |
| miguelito | 5 |
+-----------+-------+
7 rows in set (0.01 sec)
mysql>
试试看 !!!
更新2011-09-06 12:33美国东部时间
这是另一种方法:
SELECT* FROM mytable ORDER BY
IF(FIELD(`group`,9,7,6,10,8,5)=0,99999,FIELD(`group`,9,7,6,10,8,5));
这将强制除了9,7,6,10,8,5之外的任何组出现在查询的最底部.
更新2011-09-06 14:39美国东部时间
mysql> SELECT names, `group`
-> FROM mytable
-> WHERE `group` IN (9,7,6,10,8,5)
-> ORDER BY find_in_set(`group`,'9,7,6,10,8,5');
+-----------+-------+
| names | group |
+-----------+-------+
| felipe | 9 |
| mafalda | 7 |
| libertad | 6 |
| susanita | 10 |
| manolito | 8 |
| guille | 8 |
| miguelito | 5 |
+-----------+-------+
7 rows in set (0.00 sec)
嘿@Nick,你的样本数据也不错!!!
标签:mysql,condition,order-by 来源: https://codeday.me/bug/20190806/1599204.html