mysql - 从 MySql 中的列中选择不同的值

标签 mysql sql select group-by groupwise-maximum

假设,我有一个名为 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/

相关文章:

sql - 如何实现Foursquare的 "Mayor"功能——找到最近N天得分最高的用户?

mysql - 使用 MySQL 数据库为 Java 应用程序制作安装程序

php - mysql 多对多关系

mysql - 如何在另一个表中缺少值后清理表?

mysql - 加入查询也返回空

php - 在 Laravel 中获取特定时间范围内的记录

sql - 无法组合 3 个不同的 SQL 表项并获得总和

php - 通过 php 的 SQL 语法错误

c# - 如何以编程方式选择 webBrowser 控件中的文本? C#

javascript - 如何在本地存储中设置选择下拉列表的值并检索它以及将该值设置为默认值(除非更改)?