MYSQL 按空值排序和分组

Posted

技术标签:

【中文标题】MYSQL 按空值排序和分组【英文标题】:MYSQL order by and group by empty value 【发布时间】:2021-10-14 17:09:35 【问题描述】:

我正在尝试通过从我的表中显示一些复杂的数据来解决我的问题。 我的表结构是这样的:

/* CREATE TABLE */
CREATE TABLE table_name(
id int(11),
section tinytext,
time tinytext,
text time
);

INSERT INTO table_name(id, section, time, text)
VALUES (1, 'A', '10:00:00', 'text 1');

INSERT INTO table_name(id, section, time, text)
VALUES (2, 'A', '12:00:00', 'text 2');

INSERT INTO table_name(id, section, time, text)
VALUES (3, 'B', '10:00:00', 'text 3');

INSERT INTO table_name(id, section, time, text)
VALUES (4, '', '15:00:00', 'text 4');

INSERT INTO table_name(id, section, time, text)
VALUES (5, 'B', '12:30:00', 'text 5' );

INSERT INTO table_name(id, section, time, text)
VALUES (6, '', '9:00:00', 'text 6');

我得到这样的结果:

它将空白部分组合成一个部分:-(

你知道如何达到我的需要吗?我需要按时间对数据进行排序,但是当它们具有相同的部分时,将其分组,然后在下一次使用数据(如果该部分为空)

【问题讨论】:

嗨!你能发布你的查询吗?以及使用 CREATE TABLE 和 INSERT INTO 的表结构?您也可以发布您尝试过的查询吗? 不要从不从不发布表格图片。将CREATEINSERT 语句发布为text。但无论如何,您要求的是表示层的工作,而不是 DBMS。 排序不清楚。想象一下,在time 列中有一行空的section11:00 - 它必须放在哪里?当time12:15 时也是如此... 但是当我使用示例时 查询在语法上是不正确的。如果 ONLY_FULL_GROUP_BY 被禁用,则输出是不确定的。 我得到这样的结果 结果与数据和查询文本不匹配。 【参考方案1】:

我用GROUP BY (CASE WHEN section IS NULL OR section='' THEN id ELSE section END)解决了这个问题

【讨论】:

以上是关于MYSQL 按空值排序和分组的主要内容,如果未能解决你的问题,请参考以下文章

使用 MySQL 按空值进行分区

Mysql 分组并排序

mySQL分组排序

mysql分组排序后取出几条记录,

mysql 查询排序分组问题

MySQL分组、排序