我有两列名为priority
和state
:
priority
仅包含字段值:urgent
和normal
。state
仅包含字段值:wait
,executed
和done
。我正在尝试使用dataset CommandText
属性对这些进行排序,因此连接到数据集的dbgrid
会按照我在那里设置的排序顺序显示数据。
排序顺序应该是这样的:
urgent
列中包含priority
的行应该启动DBGrid列表。normal
列中标记为priority
的列表,wait
列中标记为state
的executed
列中标记为state
的done
列中标记为state
的列表结束。我无法弄清楚如何为此编写SQL语句,因此我可以在数据集的CommantText
属性中使用它。
我目前正在使用它:
SELECT *
FROM table_name
ORDER BY FIELD(column_name, "normal", "urgent") DESC
这适用于第一列priority
,但没有考虑第二列state
。
答案 0 :(得分:4)
你非常接近。您只需要order by
中的第二个密钥:
SELECT *
FROM table_name
ORDER BY FIELD(priority, 'urgent', 'normal'),
FIELD(state, 'wait', 'executed', 'done')
注意:
DESC
。您正在使用field()
,因此请按正确顺序排列。