MySql: присоединиться к той же таблице дважды, где запись не существует - PullRequest
0 голосов
/ 22 марта 2019

У меня есть таблица data:

 +-------+-----------+------+-------+-------------+
 | id    | client_id | type | name  |    status   |
 +-------+-----------+------+-------+-------------+
 |   523 |   2       | one  | a     |   verified  |
 |   526 |   1       | one  | a     |   verified  |
 |   527 |   1       | one  | b     |   verified  |
 |   527 |   1       | two  | b     |   verified  |
 +-------+-----------+------+---------------+-----+

Мне нужно получить client_id для тех, у которых where type='one' and name='a' and status='verified'' И НЕТ записи, где type=one и name=b

В приведенной выше таблице результат будет включать client_id = 2.

Как мне написать такой запрос?

1 Ответ

2 голосов
/ 22 марта 2019

Вы можете использовать коррелированные suqbuery с условием NOT EXISTS для фильтрации нежелательных записей (то есть тех, для которых существует другая запись с такими же client_id, с type = 'one' и name = 'b')

SELECT *
FROM data d
WHERE 
    type = 'one' 
    AND name = 'a' 
    AND status = 'verified'
    AND NOT EXISTS (
        SELECT 1 
        FROM data d1
        WHERE d1.client_id = d.client_id AND d1.type = 'one' and d1.name = 'b'
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...