当前位置: 首页 > 编程笔记 >

如何在MySQL中按分组字段排序?

焦宏硕
2023-03-14
本文向大家介绍如何在MySQL中按分组字段排序?,包括了如何在MySQL中按分组字段排序?的使用技巧和注意事项,需要的朋友参考一下

要对分组字段进行ORDER BY,请将ORDER BY CASE与一起使用IN()。CASE评估不同的条件,而ORDER BY则按升序或降序对值进行排序。MySQLIN()用于查找匹配项。

让我们首先创建一个表-

mysql> create table DemoTable
(
   Value varchar(40)
);

使用插入命令在表中插入一些记录-

mysql> insert into DemoTable values('John');
mysql> insert into DemoTable values('100&101');
mysql> insert into DemoTable values('Sam');
mysql> insert into DemoTable values('90');
mysql> insert into DemoTable values('Mike45');

使用select语句显示表中的所有记录-

mysql> select *from DemoTable;

这将产生以下输出-

+---------+
| Value   |
+---------+
| John    |
| 100&101 |
| Sam     |
| 90      |
| Mike45  |
+---------+
5 rows in set (0.00 sec)

以下是按分组字段排序的查询-

mysql> select *from DemoTable
   order by case when Value IN('John','Sam','Mike45') then 100
   when Value='90' then 101
   when Value='100&101' then 102
   else 103
end;

这将产生以下输出-

+---------+
| Value   |
+---------+
| John    |
| Sam     |
| Mike45  |
| 90      |
| 100&101 |
+---------+
5 rows in set (0.03 sec)
 类似资料:
  • 问题内容: 有一个字段’noticeBy’枚举(’email’,’mobile’,’all’,’auto’,’nothing’)NOT NULL默认’auto’。众所周知,按ENUM字段排序相对于其索引执行。但是,如何通过其值进行排序? 问题答案: 如“ 排序”中所述: 值根据其索引号排序,索引号取决于列规范中列出的枚举成员的顺序。例如,在for 之前排序。空字符串排在非空字符串之前,值排在所有其

  • 问题内容: Oracle的表服务器提供了一个内置功能。此功能将任何时间戳转换为前一个星期日的午夜。在MySQL中执行此操作的最佳方法是什么? Oracle还提供将时间戳转换为发生该月的第一天的午夜。在MySQL中,这很简单: 但是这个技巧将在数周内失效。我知道此功能,但是我真的不想要一年内的星期数。这些东西是用于多年的工作。 问题答案: 想通了…有点麻烦,但这就是。 而且,如果您的业务规则说您的工

  • 问题内容: 我有很多对象。 如何按名称和年龄先后按字母顺序对该数组排序? 您将使用哪种算法? 问题答案: 你可以使用以下方法: 现在按名称排序,然后按年龄排序。 “从字典上比较两个字符串”-来自docs。 是本机库中的静态方法。它会进行实际的排序,你只需要提供一个即可定义应该如何比较列表中的两个元素:这是通过提供你自己的方法实现来实现的。

  • 我有对象数组。 如何按名称和年龄按字母顺序对该数组进行排序? 你会使用哪种算法?

  • 我正在建立一个聊天网站,我有一个包含以下列的表,,,。 是聊天来源的用户的,而是聊天发送到的用户的。 现在我想获取所有聊天,但我也想分组,如果是我的id,它将按分组,如果是我的用户id,它将按分组,我尝试了这个分组,但它只是在和相同时才分组,我怎么也能让它反过来呢

  • 问题内容: 我有一张桌子:“ ID名称c_counts f_counts” 我想按顺序排序所有记录, 但这不起作用: 问题答案: 别忘了,如果要混合使用分组(即SUM)字段和非分组字段,则需要对非分组字段之一进行GROUP BY。 尝试这个: 或这个: 而且,您始终可以执行以下派生查询: 许多可能性!