gpt4 book ai didi

仅当用户具有此 ID 的最高值时,MYSQL 才按用户选择最大记录

转载 作者:行者123 更新时间:2023-11-29 00:30:10 26 4
gpt4 key购买 nike

我有 1 个表,我需要对其进行查询。
我希望仅当我具有该 veh_id 的最高值时,才能检索我在每个 veh_id 上放置的所有最高值的总和。这是我的表结构和数据:

tablename
id vehid userid amount
1 1 3 4
2 1 4 5
3 1 5 6
4 2 3 5
5 2 4 4
6 3 5 12

如果我正在查找 userid:3 的数据,期望结果为 5
如果我正在寻找 userid:4 期待结果 0
如果我正在寻找 userid:5 预期结果 18
我不知道从哪里开始。

这是我试过的。

SELECT SUM(amount) FROM tablename WHERE user_id = 3 AND amount = (SELECT max(amount)     FROM tablename GROUP BY veh_id)  

最佳答案

CREATE TABLE tablename
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,vehid INT NOT NULL
,userid INT NOT NULL
,amount INT NOT NULL
);

INSERT INTO tablename VALUES
(1 ,1 ,3 ,4),
(2 ,1 ,4 ,5),
(3 ,1 ,5 ,6),
(4 ,2 ,3 ,5),
(5 ,2 ,4 ,4),
(6 ,3 ,5 ,12);

SELECT x.userid
, COALESCE(SUM(y.max_amount),0) amount
FROM tablename x
LEFT
JOIN (SELECT vehid,MAX(amount) max_amount FROM tablename GROUP BY vehid) y
ON y.vehid = x.vehid
AND y.max_amount = x.amount
GROUP
BY userid;

+--------+--------+
| userid | amount |
+--------+--------+
| 3 | 5 |
| 4 | 0 |
| 5 | 18 |
+--------+--------+

http://www.sqlfiddle.com/#!2/6f2cd/1

关于仅当用户具有此 ID 的最高值时,MYSQL 才按用户选择最大记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16966341/

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