首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql相关查询

问mysql相关查询
EN

Stack Overflow用户
提问于 2012-01-27 15:25:14
回答 3查看 149关注 0票数 1

我需要编写一个查询,其中我需要从一个表中检索数据。

代码语言:javascript
复制
Table 
===================================
ID | userID | Status |   date | 
===================================
1     3333     Queued    xxxx
2     4444     Queued    yyyy
3     5555     Finished  zzzzz
5     6666     Queued    iiiii
6     7777     Queued    kkkkk

现在,我希望仅当status=“排队”和status=“排队”的行数大于2且具有最新ID的行时才检索行。即我想要的答案是ID =6

我尝试使用以下查询

代码语言:javascript
复制
select  * from t1 where status = "Queued" GROUP BY status HAVING count(status) > 2 ORDER BY ID DESC limit 1
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-27 15:28:01

为此,您可以使用子查询。问题是排序是在分组之前完成的。像这样的东西应该是有效的:

代码语言:javascript
复制
select * from t1 where ID = (select max(id) from t1 where status = "Queued" group by status having count(status) > 2)
票数 5
EN

Stack Overflow用户

发布于 2012-01-27 15:36:16

下面的查询应该可以解决这个问题:

代码语言:javascript
复制
select * from t1 
where id = (select max(id) from t1 where Status = 'Queued' group by Status having count(1)>2);
票数 0
EN

Stack Overflow用户

发布于 2012-01-27 15:37:00

这个变种也是可能的-

代码语言:javascript
复制
SELECT * FROM (
  SELECT * FROM t1 WHERE status = 'Queued' ORDER BY ID DESC) t
GROUP BY status HAVING count(status) > 2;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9030166

复制
相关文章

相似问题

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