MySQL Select Records, если ДРУГИЕ записи не совпадают - PullRequest
0 голосов
/ 01 мая 2009

У меня есть таблица с одной записью на человека и на предмет одежды

так

peter, jumper,blue
peter,trousers,green
sue,dress,green
peter,jumper,red
gordon,jumper,green

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

Так что в приведенном выше случае он выбрал бы только Гордона, а не жадного старого Питера

это возможно?

Ответы [ 3 ]

4 голосов
/ 01 мая 2009

Это должно работать, но это не проверено. Синтаксис также может быть немного неправильным, так как у меня в голове все еще есть Firebird SQL, но вы должны получить общее представление:

SELECT *
FROM myTable AS t1
WHERE t1.clothing = 'jumper' AND t1.color = 'green' 
AND NOT EXISTS(SELECT *
               FROM myTable AS t2
               WHERE t2.person = t1.person AND t2.clothing = 'jumper'
               AND t2.color <> 'green')
1 голос
/ 01 мая 2009
SELECT *
FROM MyTable t1
WHERE Color = 'green'
AND NOT EXISTS (
    SELECT 1 
    FROM MyTable
    WHERE Color <> 'green'
    AND PersonName = t1.PersonName
)
1 голос
/ 01 мая 2009

Мне нужно бежать на встречу, но здесь может помочь заявление CASE.

Оператор MySQL CASE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...