gpt4 book ai didi

mysql - MAX 函数返回一行

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:25 26 4
gpt4 key购买 nike

我有 3 个表:

监理人

+-----+---------+-----------+
| sid | pnombre | direccion |
+-----+---------+-----------+
| 1 | P1 | La Paz |
| 2 | Paco | 31 Pte |
| 3 | Pepe | 31 Pte |
+-----+---------+-----------+

派对

+-----+-----------+-------+
| pid | pnombre | color |
+-----+-----------+-------+
| 1 | Palanca 1 | Gris |
| 2 | Palanca 2 | Gris |
| 3 | Palanca 3 | Verde |
| 4 | Palanca 4 | azul |
+-----+-----------+-------+

目录

+-----+-----+-------+
| sid | pid | costo |
+-----+-----+-------+
| 1 | 1 | 100 |
| 1 | 2 | 120 |
| 2 | 3 | 90 |
| 1 | 3 | 150 |
| 1 | 4 | 150 |
+-----+-----+-------+

我正在尝试获取名称 = 'P1' 的用户的具有最高 'costo'(成本)的 'parte'(部分)的 ID“

我的查询是这个:

SELECT pid, MAX(costo)
FROM catalogo
WHERE sid IN(SELECT sid
FROM proveedor
WHERE pnombre = "P1")
GROUP BY pid;

但我的结果是这样的:

+-----+------------+
| pid | MAX(costo) |
+-----+------------+
| 1 | 100 |
| 2 | 120 |
| 3 | 150 |
| 4 | 150 |
+-----+------------+

我只希望得到 1 行,这是必须的

+-----+------------+
| pid | MAX(costo) |
+-----+------------+
| 3 | 150 |
+-----+------------+

那么问题来了,我的查询哪里做错了?如何使用 MAX() 返回 1 行?

注意:我已经用另一个查询解决了这个问题。
但是我正在尝试了解 MAX() 的工作原理

不使用 MAX() 求解的查询 (2):

SELECT pid, costo 
FROM catalogo
WHERE sid IN (SELECT sid
FROM proveedor
WHERE pnombre = "P1")
ORDER BY costo DESC
LIMIT 1;

最佳答案

如果您正在学习 SQL,我建议您学习显式的 join 语法。此外,您可以使用 order bylimit 获得具有最大成本的行——不需要聚合函数:

select c.pid, c.costo
from catalogo c join
proveedor p
on c.sid = p.sid
where p.pnombre = 'P1'
order by c.cost desc
limit 1;

关于mysql - MAX 函数返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655431/

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