MySQL查询新郎中的所有项目是否符合条件

MySQL查询新郎中的所有项目是否符合条件,mysql,Mysql,我有一张像这样的桌子: CREATE TABLE IF NOT EXISTS `server_orders` ( `id` int(20) unsigned NOT NULL AUTO_INCREMENT, `group_order_id` varchar(200) NOT NULL, `status` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; 有价

我有一张像这样的桌子:

    CREATE TABLE IF NOT EXISTS `server_orders` (
  `id` int(20) unsigned NOT NULL AUTO_INCREMENT,
  `group_order_id` varchar(200) NOT NULL,
  `status` int(11) NOT NULL,     
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;
有价值

INSERT INTO `server_orders` (`id`, `group_order_id`, `status`) VALUES
(1, '1', '1'),
 (2, '2', '50'),
 (3, '2', '100'),
 (4, '2', '1'),
 (5, '3', '100'),
 (6, '3', '100'),
 (7, '4', '1'),

;

仅当具有相同组id的所有行的状态为100时,我才想选择状态为100的所有行,因此在本例中,id为5和6,组id为3

类似的内容应使用
COUNT
case

select * 
from server_orders
where group_order_id in (
  select group_order_id
  from server_orders
  group by group_order_id
  having count(id) = count(case when status = 100 then 1 end)
  )

它的工作原理是将每个组的所有记录的计数与状态等于100时的计数进行比较。

类似的操作应该使用
count
CASE

select * 
from server_orders
where group_order_id in (
  select group_order_id
  from server_orders
  group by group_order_id
  having count(id) = count(case when status = 100 then 1 end)
  )
它的工作原理是将每个组\u order\u id的所有记录的计数与状态等于100时的计数进行比较。

@ddjikic--太好了,很高兴我能提供帮助@很好,很高兴我能帮上忙!