不知道你说的是不是这个意思:select a.* from table2 a left join table2 b on a.id=b.id and b.pass='N' WHERE b.id is NULL;
CREATE TABLE `tb2` ( `id` int , `pass` varchar(11) default NULL ) TYPE=MyISAM;INSERT INTO tb2 VALUES (1,'Y') ,(1,'N') ,(2,'Y') ,(3,'N') ,(3,'Y') ,(3,'N') ,(4,'Y');SELECT id FROM tb2 GROUP BY id HAVING SUM(IF(pass = 'N', 1, 0)) = 0;DROP TABLE tb2;
left join table2 b on a.id=b.id and b.pass='N'
WHERE b.id is NULL;
`id` int ,
`pass` varchar(11) default NULL
) TYPE=MyISAM;INSERT INTO tb2 VALUES
(1,'Y')
,(1,'N')
,(2,'Y')
,(3,'N')
,(3,'Y')
,(3,'N')
,(4,'Y');SELECT id FROM tb2 GROUP BY id HAVING SUM(IF(pass = 'N', 1, 0)) = 0;DROP TABLE tb2;
也十分感谢shuixin13(犬犬(心帆)) ,但是后面HAVING SUM(IF(pass = 'N', 1, 0)) = 0;
不太明白,能否讲解一二?