gpt4 book ai didi

mysql - MySQL Group By 对多列的奇怪行为

转载 作者:行者123 更新时间:2023-11-29 06:28:21 24 4
gpt4 key购买 nike

我正在编写一个查询,该查询按(高度,性别)对用户表进行分组,然后获取该高度组合中体重最小的用户的姓名 > 和性别

如果您想跳到实际查询,这里是 SQLFiddle有一个最小的代表性示例。

如果您不想打开该网址,这就是我所说的。给定一个表,例如:

| height | sex    | name    | weight |
|-------:|--------|---------|--------|
| 100 | female | Alice | 150 |
| 100 | female | Barbara | 130 |
| 100 | female | Candice | 100 |

以及执行此操作的查询如下:

SELECT name, min(weight) from users
group by height, sex

为什么查询输出:

|  name | min(weight) |
|------:|-------------|
| Alice | 100 |

我真正想要的是Candice,100而不是Alice,100

我发现它选择了 Alice,因为它是第一行,但为什么要这样做呢?这真的很奇怪而且出乎意料。

最佳答案

我会使用相关子查询,但不会使用奇特的逻辑:

select u.*
from users u
where u.weight = (select min(u2.weight)
from users u2
where u2.height = u.height and u2.sex = u.sex
);

即,返回高度/性别组合中体重最小的用户。

关于mysql - MySQL Group By 对多列的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58159556/

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