mysql - 从每个 GROUP BY (unique_id) 和 ORDER BY 数字中选择具有 MAX id 的行

标签 mysql

我有一个包含 id、unique_id 和 order_number 的表。

  1. 我想按 unique_id 对行进行分组
  2. 我想从每个组中取出具有 MAX id 的行
  3. 最后我想按 order_number 对行进行排序

我还有几个 WHERE 子句。这是我的尝试,但没有成功:

SELECT MAX(id) AS id
     , order_number
  FROM table 
 WHERE final = 0 
   AND username = '$username' 
   AND active = 1 
 GROUP 
    BY unique_id 
 ORDER 
     BY order_number

最佳答案

您可以将查询用作子查询:

SELECT *
FROM table 
WHERE id IN (SELECT MAX(id) AS id
             FROM table 
             WHERE final=0 AND username='$username' AND active=1 
             GROUP BY unique_id) 
ORDER BY order_number

或者,如果 id 不是唯一的,使用 JOIN:

SELECT t1.*
FROM table AS t1
JOIN (SELECT MAX(id) AS max_id, unique_id
      FROM table           
      WHERE final=0 AND username='$username' AND active=1 
      GROUP BY unique_id
) AS t2 ON t1.unique_id = t2.unique_id AND t1.id = t2.unique_id
ORDER BY order_number

关于mysql - 从每个 GROUP BY (unique_id) 和 ORDER BY 数字中选择具有 MAX id 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35867601/

相关文章:

mysql - 排除工作人员

MySQL - 在WHERE中查找平均数

mysql - 自动将一个账户的RDS中的Mysql数据复制到另一个账户的RDS

MySQL 组列

mysql - 如何在 MySQL 中查询具有地理空间 "point"字段的表

mysql - MySQL 中 tinyint(2) 的最大值是多少?

mysql - 使用 JDBC 问题更新 MySQL 表

php - 从数据库获取类别期间按类别过滤器计算行数

mysql - 触发错误 : SQL Error (1193): Unknown system variable 'Showedup'

PHP:检查数据库中的项目是否具有相同的名称