按 2 列的字段值排序 - mysql - delphi - dbgrid

Sort by field values from 2 columns - mysql - delphi - dbgrid

我有两列名为 prioritystate:

我正在尝试使用我的 dataset CommandText 属性 对这些进行排序,因此连接到数据集的 dbgrid 会按照我在那里设置的排序顺序显示数据。

排序顺序应该是这样的:

    1. priority 列中包含 urgent 的行应开始 DBGrid 列表。
    2. 然后列表应该继续 priority 列中标记为 normal 的列表,
    1. 后面是 state 列中标记为 wait 的那些,
    2. 后面是 state 列中标记为 executed 的那些,
    3. 最后,列表以 state 列中标记为 done 的列表结尾。

我不知道如何为此编写 SQL 语句,所以我可以在数据集的 CommantText 属性 中使用它。

我目前正在使用这个:

SELECT *
  FROM table_name
  ORDER BY FIELD(column_name, "normal", "urgent") DESC

这适用于第一列 priority 但不考虑第二列 state

你们很亲近。您只需要 order by:

中的第二个密钥
SELECT *
FROM table_name
ORDER BY FIELD(priority, 'urgent', 'normal'),
         FIELD(state, 'wait', 'executed', 'done')

备注:

  • 我从第一个键中删除了 DESC。您正在使用 field(),因此请按正确顺序排列。
  • 这将通过相同的三个键对 "urgent" 进行排序。这似乎与您的问题一致。