выделять строки где не в нескольких столбцах mysql - PullRequest
5 голосов
/ 24 июня 2019

У меня есть следующий набор результатов:

request_id  |  p_id
66          |  10
66          |  10
66          |  10
66          |  22
66          |  22
76          |  23
76          |  24

Я пытаюсь выбрать строки, которые excludes записывают с определенными значениями комбинации:

request_id   |   product_id
66           |   10
76           |   23

Таким образом, выходной набор результатов должен содержать только эти записи:

66          |  22
66          |  22
76          |  24

Я пытался сделать:

select * from `table` 
where request_id NOT IN (66, 76) AND product_id NOT IN (10, 22)

Но это дает мне пустой набор результатов.

Как исключить только комбинацию этих двух значений?

Ответы [ 3 ]

5 голосов
/ 24 июня 2019

Вы можете попробовать ниже -

DEMO

select * from `table` 
where (request_id, p_id) NOT IN ((66, 10),(76,23)) 

ВЫВОД:

request_id  p_id
66          22
66          22
76          24
2 голосов
/ 24 июня 2019

Попробуйте использовать что-то вроде этого:

SELECT DISTINCT *
FROM TABLE1
WHERE TABLE1.request_id NOT IN
(
    SELECT r_id 
    FROM TABLE2
)
AND TABLE1.p_id NOT IN
(
    SELECT p_id 
    FROM TABLE2
)
0 голосов
/ 24 июня 2019

Это лучший способ:

SELECT DISTINCT *
FROM TABLE1
LEFT JOIN TABLE2 ON TABLE1.request_id = TABLE2.r_id
                AND TABLE1.p_id = TABLE2.p_id
WHERE TABLE2.p_id IS NULL
...