首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从具有类似id数据字段的表中选择唯一数据

从具有类似id数据字段的表中选择唯一数据
EN

Stack Overflow用户
提问于 2013-07-02 09:44:10
回答 3查看 158关注 0票数 2

我试图从上面的表(order_status_data2)中检索唯一的值。我想获得以下字段的最新订单:id、order_id和status_id。高id字段值表示最近的项,即

4- 56 -4

8- 52 6

7-6-2

9-8-2

等。

我尝试了以下查询,但没有获得所需的结果(尤其是status_id字段):

代码语言:javascript
复制
 select max(id) as id, order_id, status_id from order_status_data2 group by order_id

这就是我得到的结果:

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-02 09:49:12

就像这样:

代码语言:javascript
复制
select d.*
from order_status_data2 d
join (select max(id) mxid from order_status_data2 group by order_id) s 
  on d.id = s.mxid
票数 3
EN

Stack Overflow用户

发布于 2013-07-02 09:49:38

代码语言:javascript
复制
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,您需要一个联接来为所有非聚合列选择一个特定的行。

票数 5
EN

Stack Overflow用户

发布于 2013-07-02 10:01:36

试试这个Query.This会帮你的

代码语言:javascript
复制
SELECT id ,orderid,statusid 
FROM table_name 
WHERE id IN
(
  SELECT max(id) FROM table_name GROUP BY orderid 
)
ORDER BY statusid 

您可以引用这个使用您的示例的链接

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17422320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档