在MySQL中如何定义自定义排序顺序.
为了解释我想要的东西,考虑一下这个表:
ID Language Text
0 ENU a
0 JPN b
0 DAN c
1 ENU d
1 JPN e
1 DAN f
2 etc...
Run Code Online (Sandbox Code Playgroud)
在这里,我想返回按语言和升序ID排序的所有行,以便首先是Language = ENU,然后是JPN,最后是DAN.
结果应该是:a,d,b,e,c,f等.
这甚至可能吗?
我不久前发现了这个,并且从那时起就一直在使用它; 然而,今天看着它,我意识到我并不完全理解为什么它有效.有人可以为我解释一下吗?
ORDER BY s.type!= 'Nails',
s.type!= 'Bolts',
s.type!= 'Washers',
s.type!= 'Screws',
s.type!= 'Staples',
s.type!= 'Nuts', ...
Run Code Online (Sandbox Code Playgroud)
如果我按s.type订购,则按字母顺序排序.如果我使用上面的示例,它使用与行位置相同的顺序.我不明白的是使用!=.如果我使用=它会以相反的顺序出现.我无法理解这个概念.
我会告诉我,使用=代替上面的!=将Nails放在第一位,但它没有,它把它放在最后.我想我的问题是:为什么我必须使用!=,not =在这种情况下?
我有一个类别表:
ID Category
"1","Baking"
"3","Family"
"4","Entertaining"
"5","Children"
"6","Desserts"
Run Code Online (Sandbox Code Playgroud)
现在我想订购select语句的结果
ID Category
"4","Entertaining"
"3","Family"
"1","Baking"
"5","Children"
"6","Desserts"
Run Code Online (Sandbox Code Playgroud)
例如.在MySQL中,你会这样做:
SELECT * FROM CATEGORIES ORDER BY FIELD (ID, 4,3,1,5,6);
Run Code Online (Sandbox Code Playgroud)
你会怎么在SQLite中做到这一点?我没有"order by"字段.
你如何在Django中定义一个特定的顺序QuerySet?
具体来说,如果我有QuerySet这样的话:['a10', 'a1', 'a2'].
定期订购(使用Whatever.objects.order_by('someField'))会给我['a1', 'a10', 'a2'],而我正在寻找:['a1', 'a2', 'a10'].
定义我自己的排序技术的正确方法是什么?