我有2个表:users_item
有2列user_id, item_id
,item_rates
有2 columns 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行。有人可以帮忙吗?提前致谢。
答案 0 :(得分:0)
尝试按user_id, rate_item_id
我很惊讶MySql没有给你一个错误,Oracle会......
答案 1 :(得分:0)
好的,我找到了你想要的东西..试试这个:
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
您需要子查询的原因是 同一用户拥有的多个不同项目可能具有相同的费率,这可能是用户拥有的项目的最大费率 。