gpt4 book ai didi

mysql - 在其他表上使用 group by 选择 max

转载 作者:行者123 更新时间:2023-11-30 01:33:25 25 4
gpt4 key购买 nike

我有 2 个表:users_item 有 2 列 user_id、item_iditem_rates 有 2 列rate_item_id、rate.

它们与users_item.item_id = item_rates.rate_item_id上的Foreign_Key连接。我需要为给定范围的用户选择具有最大速率的 item_id。一个用户可以拥有很多元素。我的选择是:

SELECT MAX(rate), rate_item_id, user_id 
FROM users_item JOIN item_rates ON item_id = rate_item_id
AND user_id in (2706,2979) GROUP BY user_id;

但它返回的不是具有最大速率的对应 item_id。在给定的示例中,select 必须仅返回 2 行。有人可以帮忙解决这个问题吗?提前致谢。

最佳答案

好的,我找到了你想要的..试试这个:

SELECT users_item.user_id, item_id, maxrate
FROM user_items
JOIN item_rates ON users_item.item_id = item_rates.rate_item_id
JOIN (SELECT MAX(rate) AS maxrate, user_id
FROM users_item JOIN item_rates ON item_id = rate_item_id
WHERE user_id in (1,2)
GROUP BY user_id) AS maxis
ON users_item.USER_ID = maxis.USER_ID
WHERE item_rates.rate = maxrate

您需要子查询的原因是,同一用户拥有的多个不同项目可能具有相同的费率,这可能是用户拥有的项目的最大费率

关于mysql - 在其他表上使用 group by 选择 max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17190995/

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