我正在表格“业务”如下所示
我想按自定义顺序按类型获取记录顺序。所以我写了这样的查询
SELECT * FROM business
ORDER BY FIELD(type,'type3','type2','type10')
但是发生的事情是其他类型按顺序出现并且给定的顺序终于出现了。给定的顺序应该在顶部,然后是其他记录。上面的查询返回结果如下。
如何将type3,type2和type10按顺序排在最前面。
答案 0 :(得分:1)
那将是:
SELECT
*
FROM
business
ORDER BY
`type` IN ('type3', 'type2', 'type10'),
FIELD (`type`, 'type3', 'type2', 'type10')
答案 1 :(得分:0)
尝试以下:
ORDER BY
CASE `type`
WHEN 'type3' THEN 1
WHEN 'type2' THEN 2
WHEN 'type10' THEN 3
ELSE 4
END
答案 2 :(得分:0)
要使用field
功能查看结果集顶部的选择性数据,您必须在这些值集上使用ASC
或DESC
。否则,将返回默认结果。你的就是一个例子。
您可以尝试使用
ORDER BY FIELD (type, 'type3', 'type2', 'type10') DESC
将结果视为
type10
type2
type3
如何将type3,type2和type10按顺序排在最前面
使用ASC
将导致
type3
type2
type10
与Field
或ASC
一起使用时,函数DESC
的数据输入顺序是优先级。否则结果将是默认值。
我在查询中没有提供这些字段
除非您指定WHERE
条件,否则它们肯定会在结果集中。 FIELD
函数不是WHERE
子句的别名。
请参阅 :