Выберите строку на основе другой строки, имеющей тот же идентификатор в той же таблице в MySQL - PullRequest
0 голосов
/ 28 мая 2019

У меня есть табличное представление T вроде:

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, где тот же идентификатор в другом месте таблицы - A5.

Пробовал несколько подходов LEFT JOIN, но никуда не попал. Пожалуйста помоги. Thanx.

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

Вам нужны СУЩЕСТВУЮЩИЕ:

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

См. Демоверсию .
Результаты:

| id  | C1  | C2  |
| --- | --- | --- |
| 1   | pat | 190 |
| 2   | pet | 190 |
0 голосов
/ 28 мая 2019

Вы можете использовать EXISTS, чтобы проверить, существует ли строка с 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...