Как выбрать уникальное значение из двух столбцов, если третьи имеют одинаковое значение - PullRequest
0 голосов
/ 28 апреля 2019

Таблица:

id second_id status
1  2         1
2  1         0
1  3         1
3  1         1
1  4         1
4  1         1

Я пытаюсь выбрать только это уникальное значение, если пара имеет одинаковый статус ВЫХОД:

id second_id status
1  3         1
1  4         1

Я пытаюсь с

SELECT table.id, table.second_id, table.status FROM table 
WHERE table.id = 1 and table.status = 1 

но это возвращение конечно плохих результатов;) Спасибо за помощь :)

Ответы [ 2 ]

2 голосов
/ 28 апреля 2019

Одним из способов сделать это является JOIN таблица для самой себя, ища совпадающие значения id и second_id с одинаковыми status. Мы также проверяем, что значение id второй таблицы больше, чем первое, чтобы избежать дублирования:

SELECT t1.*
FROM test t1
JOIN test t2 ON t2.id = t1.second_id
            AND t2.second_id = t1.id
            AND t2.status = t1.status
            AND t2.id > t1.id

Выход:

id  second_id   status
1   3           1
1   4           1

Демонстрация по dbfiddle

0 голосов
/ 28 апреля 2019

Один метод использует exists:

select t.*
from t
where exists (select 1
              from t t2
              where t2.second_id = t.id and
                    t2.id = t.second_id and
                    t2.status = t.status
             );

Или, выражая это с помощью in и кортежей проще:

select t.*
from t
where (id, second_id, status) in
          (select second_id, id, status from t);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...