Sql - 按特定顺序选择

时间:2017-05-23 18:42:33

标签: mysql sql

我需要做一个特定的SQL查询。 例如,我们有一个名为people的表,该表具有以下记录:

- João (id ->1)
- Telmo (id ->2)
- Maria (id ->3)
- Henrique (id ->4)
- Pedro (id ->5)

我将获得一个特定的人,例如我得到henrique id 4选择必须向我显示此列表:

- Henrique
- Maria
- Telmo
- João
- Pedro

我还需要做逆序

- Henrique
- Pedro
- João
- Telmo
- Maria

我该怎么做?

谢谢

4 个答案:

答案 0 :(得分:2)

使用CASE WHEN检查名称:

select name
from mytable
order by case when name = 'Henrique' then 1 else 2 end, id;

当然

select name
from mytable
order by case when name = 'Henrique' then 1 else 2 end, id desc;

与Henrique的逆序相反。

如果你得到的是id而不是名字,那么

order by case when id = 4 then 1 else 2 end, id [desc];

答案 1 :(得分:1)

您可以使用UNION运算符为所有人提供< = id和所有人> id,例如:

SELECT name FROM table WHERE id >= 4 ORDER BY id DESC

UNION 

SELECT name FROM table WHERE id > 4 ORDER BY id

答案 2 :(得分:0)

使用

select `name` from `table_name` order by find_in_set(id,'4,3,2,1,5');

要获得反向列表,请使用:

select `name` from `table_name` order by find_in_set(id,'4,5,1,2,3');

答案 3 :(得分:0)

如果您希望查询按照您名字中第一个字母的减少订购结果,则可以添加关闭ORDER BY name