要对分组字段进行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。 尝试这个: 或这个: 而且,您始终可以执行以下派生查询: 许多可能性!