按查询的where子句中的字段顺序对sql查询的结果进行排序
Posted
技术标签:
【中文标题】按查询的where子句中的字段顺序对sql查询的结果进行排序【英文标题】:sort result of sql query by order of field in where clause of query 【发布时间】:2013-05-07 17:50:13 【问题描述】:我想根据查询的包含对该查询的结果进行排序:
在这里:
SELECT a from Frais a where a.libelle = 'FRET' or a.libelle = 'Douane' or a.libelle = 'Transitaire'
我想要先有FRET
和之后有Douane
的记录,依此类推
order by libelle
没有解决问题,它按照字母顺序 asc 或 desc 对它们进行排序
【问题讨论】:
【参考方案1】:一种选择是使用CASE
语句:
SELECT *
FROM Frais a
WHERE a.libelle = 'FRET'
OR a.libelle = 'Douane'
OR a.libelle = 'Transitaire'
ORDER BY
CASE
WHEN a.libelle = 'FRET' THEN 1
WHEN a.libelle = 'Douane' THEN 2
WHEN a.libelle = 'Transitaire' THEN 3
END
【讨论】:
【参考方案2】:SELECT a from Frais a where a.libelle = 'FRET' or a.libelle = 'Douane' or a.libelle = 'Transitaire'
order by case a.libelle when 'FRET' then 0 when 'Douane' then 1 when 'Transitaire' then 2 end
【讨论】:
【参考方案3】:您也可以通过将值放在具有明确排序的“临时”表中来做到这一点:
select f.*
from frais f join
(select 'FRET' as val, 1 as ord union all
select 'Douane', 2 union all
select 'Transitaire', 3
) vals
on f.libelle = vals.val
order by vals.ord
【讨论】:
以上是关于按查询的where子句中的字段顺序对sql查询的结果进行排序的主要内容,如果未能解决你的问题,请参考以下文章