mysql查询新郎满足条件的所有项目

时间:2013-05-27 00:51:54

标签: 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 ;

带值

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 with group_order_id 3

1 个答案:

答案 0 :(得分:1)

使用COUNTCASE

一起使用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) ) 这样的内容
{{1}}

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