gpt4 book ai didi

mysql - SQL 分组合并未按预期工作

转载 作者:行者123 更新时间:2023-11-29 20:11:45 25 4
gpt4 key购买 nike

我有以下 MySQL 表(图像):

+----+------------+-----------------------+
| id | gallery_id | path |
+----+------------+-----------------------+
| 58 | NULL | 58.jpg
| 59 | NULL | 59.jpg
| 66 | 9 | 9-001.jpg
| 67 | 9 | 9-002.jpg
| 68 | 10 | 10-001.jpg
| 69 | 10 | 10-002.jpg
...

我想选择 gallery_id 为空的行,或者如果不为空,则按 gallery_id 对其进行分组。所以预期的结果是:

+----+------------+-----------------------+
| id | gallery_id | path |
+----+------------+-----------------------+
| 58 | NULL | 58.jpg
| 59 | NULL | 59.jpg
| 66 | 9 | 9-001.jpg
| 68 | 10 | 10-001.jpg
...

我尝试使用coalesce函数来实现这个结果:

select * from `images` group by coalesce(gallery_id, id);

但它仅返回 gallery_id 为 null 的行。请告诉我我做错了什么?提前致谢。

最佳答案

你的要求没有意义。 GROUP BYSELECT * 是没有意义的,因为不清楚大多数列值来自哪里。

您似乎想要确定优先级。 。 。每个 NULL 一行,然后每个画廊一行。

我建议:

select i.*
from images i
where i.gallery_id is null or
i.id in (select min(i2.id) from images i2 group by i2.gallery_id);

额外的好处是,这是标准 SQL,应该适用于任何数据库。

关于mysql - SQL 分组合并未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40058730/

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