gpt4 book ai didi

mysql - 将 MySQL 中的行聚合为单行,忽略 NULL 值

转载 作者:行者123 更新时间:2023-11-29 02:10:39 24 4
gpt4 key购买 nike

给定一个表格

id  date        job    color  qty
1 2018-12-10 12345 green 1
2 2018-12-11 12345
3 2018-12-15 12345
4 2018-12-21 12345 red
5 2018-12-21 12345 4
6 2018-12-22 12345

id 列是自动递增的,是表的主键。

一个简单的查询

SELECT * FROM `table` WHERE `job` = '12345' ORDER BY `id` ASC;

将按照插入顺序返回作业 12345 的所有记录。

问题:我将如何查询表以仅返回包含每列最新值的单行?

所需的行看起来像这样

6   2018-12-22  12345  red    4         

最佳答案

一种方法是使用 Group_Concat()Substring_Index() 来提取最新的非空值。 GROUP_CONCAT() 会忽略 null 值。

SELECT 
MAX(id) AS id,
MAX(date) AS date,
MAX(job) AS job,
SUBSTRING_INDEX(GROUP_CONCAT(color ORDER BY id DESC), ',', 1) AS color,
SUBSTRING_INDEX(GROUP_CONCAT(qty ORDER BY id DESC), ',', 1) AS qty
FROM `table`
WHERE `job` = '12345';

上述查询中的一个假设是date 的最大值对应于最大id 值。

此外,由于我们只关心“最新”值(只获取一个值);我们将不受 group_concat_max_len 变量的限制。

关于mysql - 将 MySQL 中的行聚合为单行,忽略 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53704009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com