如何在MySQL中选择共有一列但另一列必须满足2个条件的行

如何在MySQL中选择共有一列但另一列必须满足2个条件的行,mysql,Mysql,这个任务对我来说有点困惑,甚至这个问题的标题也很难。已经尝试了中的答案,但不适用于我的情况,因为我需要从COL2 PC和PP获得一些特定的信息 我需要得到COL2满足2个条件的所有行='PC'或'PP'。就像这个例子 我的桌子: ID COL1 COL2 1 100 PC • 2 100 PP • 3 100 PF 4 200 PP 5 200 PF 6

这个任务对我来说有点困惑,甚至这个问题的标题也很难。已经尝试了中的答案,但不适用于我的情况,因为我需要从COL2 PC和PP获得一些特定的信息

我需要得到COL2满足2个条件的所有行='PC'或'PP'。就像这个例子

我的桌子:

ID    COL1    COL2
1      100     PC •     
2      100     PP •     
3      100     PF 
4      200     PP   
5      200     PF    
6      300     PC •   
7      300     PP •  
期望输出:

ID    COL1    COL2
1      100     PC •     
2      100     PP •      
6      300     PC •   
7      300     PP •  
此查询:

select col1
from tablename
where col2 in ('PC', 'PP')
group by col1
having count(distinct col2) = 2
返回所需的所有Col1,您可以将其与中的运算符一起使用:

看。 结果:

您可以使用以下代码:

SELECT a.* FROM (
SELECT *
FROM `table` WHERE col2 = 'pc'
UNION 
SELECT *
FROM `table` 
WHERE col2 = 'pp' AND col1 IN (SELECT col1
FROM `table` WHERE col2 = 'pc')
) a
ORDER BY a.col1 ASC, a.col2 ASC
这是你想要的结果:

也许我误解了,但我想知道,既然表中的ID号4的“COL2”值为“PP”,为什么它不在您想要的输出中。你能详细解释一下吗?@David使用我表格中的SELECT*,其中COL2='PC'或COL2='PP'我得到这一行:id:4,col1:200,COL2:PP.@SMS问得好。因为我不需要col2不同时满足PC和PC两个条件的行PP@David对不起,也许我解释得不够。第4行不符合标准,因为没有其他COL1=200和COL2=PCWow的条目,这正是我需要的!非常感谢你。!!
| ID  | COL1 | COL2 |
| --- | ---- | ---- |
| 1   | 100  | PC   |
| 2   | 100  | PP   |
| 6   | 300  | PC   |
| 7   | 300  | PP   |
SELECT a.* FROM (
SELECT *
FROM `table` WHERE col2 = 'pc'
UNION 
SELECT *
FROM `table` 
WHERE col2 = 'pp' AND col1 IN (SELECT col1
FROM `table` WHERE col2 = 'pc')
) a
ORDER BY a.col1 ASC, a.col2 ASC