mysql - 在 MySQL 中对 ID 进行分组时获取整行

标签 mysql sql database

<分区>

我正在尝试选择具有最高点值的整行。当我尝试 GROUP 时,我发现我无法选择整行。所以我在这里提出了这个查询。

SELECT i1.*
FROM objects i1
LEFT OUTER JOIN objects i2
  ON (i1.product = i2.product AND i1.points < i2.points)
WHERE i2.product IS NULL and i1.product < $day
order by product asc, points desc

表格:

product   name      points   message
----------------------------------------
1         Joe       4        Message 1
2         Steve     15       Message 2
2         Loui      17       Message 3
3         Larry     10       Message 4
3         Harry     10       Message 5
3         Hank      8        Message 6

我想要这样的结果:

product   name      points   message
----------------------------------------
1         Joe       4        Message 1
2         Loui      17       Message 3
3         Larry     10       Message 4

现在,如果两行具有相同的点,产品将被返回两次。

我如何选择才能让得分最高的每个产品只有一行?

最佳答案

怎么样:

SELECT i1.*
FROM objects i1
where points= (select max(points) from objects i2 where i1.product=i2.product)

和 sql fiddle :http://sqlfiddle.com/#!2/4caa0/1

关于mysql - 在 MySQL 中对 ID 进行分组时获取整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20329351/

相关文章:

mysql - 我如何使用选择中的变量来调用存储过程?

javascript - 从动态页面/表中获取数据?

php - 安装 XAMPP 的端口问题

php - 基数违规 : 1222 The used SELECT statements have a different number of columns

c - 如何在 C 中打开带有用户输入变量的文件?

mysql - 这样的数据库表设置看起来正确吗?

SQL Server 日期 CAST 默认格式

php - 对于大数据集,哪个更快? mysql、mysqli 还是 PDO?

java - 如何在cassandra中实现行级锁定

sql - 按顺序和状态从表分区中选择