繁体   English   中英

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

[英]Sort by field values from 2 columns - mysql - delphi - dbgrid

我有两列名为prioritystate

  • priority将仅包含字段值: urgentnormal
  • state将只包含字段值: waitexecuteddone

我正在尝试使用我的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() ,因此请按正确的顺序排列。
  • 这将按相同的三个键对“紧急”进行排序。 这似乎与您的问题一致。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM