gpt4 book ai didi

MySQL 查询 : one table, 二级 SELECT。有没有更好的办法?

转载 作者:行者123 更新时间:2023-11-29 07:07:26 25 4
gpt4 key购买 nike

我有一个名为“double_select”的表,如下所示:

itemID | orderID | status
------ ------- ------
1 1 ready
2 1 ready
3 1 waiting
4 2 complete
5 3 ready
... ... ...

我想用一条 SQL 命令检索:

  • 所有状态为“就绪”的项目
  • 上面返回的任何 orderID 的所有其他项目

所以在上面的表格片段中,我想返回 itemID 的 1、2、3 和 5。

我可以用这个语句来做到这一点:

SELECT `a`.* FROM `double_select` AS `a`, `double_select` AS `b` WHERE `a`.`status` = "ready" OR (`a`.`status` != "ready" AND `b`.`orderID` = `a`.`orderID` AND `b`.`status` = "ready") GROUP BY `a`.`itemID`;

但是好像不是很干净。有更好的方法吗?

表格详情如下,非常感谢,

詹姆斯

CREATE TABLE `double_select` (`itemID` int(11) NOT NULL auto_increment,`orderID` int(11) default NULL,  `status` varchar(128) default NULL,  PRIMARY KEY  (`itemID`),  KEY `Status` (`status`)) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
insert into `double_select`(`itemID`,`orderID`,`status`) values (1,1,'ready'),(2,1,'waiting'),(3,1,'waiting'),(4,2,'complete'),(5,2,'ready'),(6,3,'ready'),(7,3,'ready'),(8,4,'complete'),(9,5,'failed'),(10,6,'complete');

最佳答案

子查询示例:

select * 
from double_select
where orderID in
(select orderID
from double_select
where `status` = 'ready')

关于MySQL 查询 : one table, 二级 SELECT。有没有更好的办法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6483276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com