根据MySQL中同一表中具有相同ID的另一行选择行

时间:2019-05-28 11:14:25

标签: mysql sql

我有一个像这样的表格视图:

id | C1   | C2  |
---+------+-----+
1  | pat  | 190 |
1  | pat1 | 191 |
1  | A5   | 302 |
2  | pet  | 190 |
2  | pet1 | 191 |
2  | A5   | 302 |
3  | pit  | 190 |
3  | pit1 | 191 |
3  | A6   | 302 |

想要得到:

id | C1   | C2  |
---+------+-----+
1  | pat  | 190 |
2  | pet  | 190 |

换句话说,返回ID,其中C2 = 190,其中表中其他位置的相同ID是A5。

已经尝试了几种LEFT JOIN方法,但是还没有到任何地方。请帮忙。谢谢。

2 个答案:

答案 0 :(得分:2)

您需要存在:

select t.*
from tablename t
where c2 = 190
and exists (
  select 1 from tablename where id = t.id and c1 = 'A5'
)

请参见demo
结果:

| id  | C1  | C2  |
| --- | --- | --- |
| 1   | pat | 190 |
| 2   | pet | 190 |

答案 1 :(得分:0)

您可以使用EXISTS来检查ID是否存在带有c1 = 'A5'的行。

SELECT *
       FROM t t1
       WHERE t1.c2 = 190
             AND EXISTS (SELECT *
                                FROM t t2
                                WHERE t2.id = t1.id
                                      AND t2.c1 = 'A5');