我需要做一个特定的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
我该怎么做?
谢谢
答案 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