我在工作订单中只有一个场域C_criticality。
在C_criticality字段中有三个选项
在该C_criticality字段中,某些列为null(空),应最后出现。 现在,我必须按重要性对输出进行排序,非关键性,工具会出现null值(空值)。
创建表工作单 ( wonum int, C_criticality varchar(255), );
插入工作单(wonum,C_criticality) 值(2,“关键”); 插入工作订单(wonum,C_critical) 值(1,“非关键”); 插入工作订单(wonum,C_critical) 值(15,“关键”); 插入工作订单(wonum,C_critical) 值(12,“工具”); 插入工作订单(wonum,C_critical) 值(21,“非关键”); 插入工作订单(wonum,C_critical) VALUES(11,'');
输出:-
C_criticality wonum
critical 2
critical 15
non-critical 21
tool 12
null 11
答案 0 :(得分:2)
由于您已标记 mysql ,因此查询将类似,
if 1 => 1 2 3 ... 15(last page) if 2 => 1 2 3 ...15 if 3 => 1 2 3
4 ... 15 if 4 => 1...3 4 5...15 if 15 =>1...13 14 15 if 14=>1...
13 14 15 if 13 => 1 ... 12 13 14 15 if 12 => 1 ... 11 12 13 ... 15
答案 1 :(得分:2)
我们可以尝试使用ISNULL
和FIELD
进行两层排序:
SELECT *
FROM yourTable
ORDER BY
ISNULL(C_criticality), -- 0 for non NULL, 1 for NULL
FIELD(C_criticality, 'criticality', 'noncritical', 'tool');
对FIELD
的呼叫将根据您提供的列表进行排序。
答案 2 :(得分:2)
这适用于所有SQL引擎,不仅限于MySQL
select *
from workorder
order by case when C_criticality = 'critical' then 1
when C_criticality = 'non-critical' then 2
when C_criticality = 'tools' then 3
else 4
end
答案 3 :(得分:0)
这取决于DBMS。在某些选项中,NULLS FIRST
,NULLS LAST
在MySQL中,您可以找到本文有趣的https://www.designcise.com/web/tutorial/how-to-order-null-values-first-or-last-in-mysql