mysql - 从具有相似 ID 数据字段的表中选择唯一数据

标签 mysql sql

order_status_data2 table

我正在尝试从上表 (order_status_data2) 中检索唯一值。我想获取包含以下字段的最新订单:id、order_id 和 status_id。高 id 字段值表示最近的项目,即
4 - 56 - 4
8 - 52 - 6
7 - 6 - 2
9 - 8 - 2

我尝试了以下查询但没有得到想要的结果,尤其是 status_id 字段:

 select max(id) as id, order_id, status_id from order_status_data2 group by order_id

这是我得到的结果:
query results


我将如何制定查询以获得所需的结果?

最佳答案

SELECT o.id, o.order_id, o.status_id
FROM order_status_data2 o
JOIN (SELECT order_id, MAX(id) maxid
      FROM order_status_data2
      GROUP BY order_id) m
ON o.order_id = m.order_id AND o.id = m.maxid

SQL Fiddle

在您的查询中,您没有对 status_id 施加任何约束,因此它从组中的任意行中选取它。选择 max(id) 不会使其从恰好具有该值的行中选择 status_id,您需要一个连接来为所有非聚合列。

关于mysql - 从具有相似 ID 数据字段的表中选择唯一数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422320/

相关文章:

php - 将多个值插入数据库、php、sql

php - 从 SELECT PHP 设置变量

java - 数据库 - [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序

mysql - 在 mysql 执行期间使用 IN 的替代方法

java - 如何在 SQL 字符串中插入多个 where 子句

mysql - 从子查询发送列

javascript - php 中的 MySql 查询仅在以 json 编码时返回最后的结果

php - MAMP 尝试连接到生产 SQL 数据库 - localhost PHP Google App Engine 灵活不工作

mysql - 具有多个表的日期计算的新字段 : update or procedure?

php - 如何克服这个错误? "Undefined index: name in C:\Program Files\EasyPHP-12.0\www\ipetlin\signup.php on line 118"