2013-05-27 64 views
1

大家好項目,我有我TABEL至極這個樣子的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'), 

; 

我想用狀態100只有當所有行選擇所有的人具有相同組ID的狀態爲100,所以在這種情況下,它將是ID爲5和6與group_order_id 3

回答

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) 
) 

它的工作原理,當狀態等於100

+0

做工精細比較所有記錄每個group_order_id以計數的計數。謝謝:) – ddjikic

+0

@ddjikic - 太棒了,很高興我可以幫忙! – sgeddes