假设,我有一个名为 items 的表:
sender_id receiver_id goods_id price
2 1 a1 1000
3 1 b2 2000
2 1 c1 5000
4 1 d1 700
2 1 b1 500
在这里,我想从 items 表中按价格降序选择 sender_id、goods_id,这样包含相同 sender_id 值的行不会出现超过一次(这里是 sender_id 2)。我使用了以下查询,但没有成功:
select distinct sender_id,goods_id from items where receiver_id=1 order by price desc
结果显示所有五个元组(记录),其中包含 sender_id 2 的元组按时间降序排列三次。但我想要的是只显示三个记录,其中一个 sender_id 为 2,最高价格仅为 5000 。 我应该怎么办? 我的预期输出是:
sender_id goods_id
2 c1
3 b2
4 d1
最佳答案
获取每组的最高价格,你可以这样做:
SELECT T1.*
FROM (
SELECT
MAX(price) AS max_price,
sender_id
FROM items
GROUP BY sender_id
) AS T2
INNER JOIN items T1 ON T1.sender_id = T2.sender_id AND T1.price = T2.max_price
WHERE T1.receiver_id=1
ORDER BY T1.price
关于mysql - 从 MySql 中的列中选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21011698/