我有一个像这样的表格视图:
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方法,但是还没有到任何地方。请帮忙。谢谢。
答案 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');