SQL: “НЕ В” альтернативе для выбора строк на основе значений *отличающийся* строки?

или можно сделать:

Separator = ""
For Each Item In Collection
  Add Separator + Item To String
  Separator = ", "

установка By разделитель к пустой строке в первом повторении Вы пропускаете первую запятую. Один меньше, если оператор. Этот мог бы или не мог бы быть более читаемым в зависимости от того, что Вы привыкли к

11
задан Dave Jarvis 30 September 2010 в 20:43
поделиться

2 ответа

Примерно так:

SELECT a.name, a.team
FROM bowlers a
LEFT OUTER JOIN bowlers b ON a.name = b.name AND b.team = 'pin pals'
WHERE a.team = 'The homer team'
AND b.name IS NULL;

Вы также можете сделать это так:

SELECT a.name, a.team
FROM bowlers a
WHERE a.team = 'The homer team'
AND NOT EXISTS (SELECT * FROM bowlers b
    WHERE b.team = 'pin pals'
    AND a.name = b.name
    );

Кстати, это называется «левое анти-полусоединение».

15
ответ дан 3 December 2019 в 07:13
поделиться

Вы можете LEFT JOIN и убедиться, что в объединенной таблице нет данных (все равно нулю).

SELECT a.name, a.team 
    FROM bowlers a
    LEFT JOIN bowlers b
        ON b.name = a.name AND b.team = 'pin pals'
    WHERE a.team = 'The homer team' 
    AND a.name
    -- the join has to fail for this to be null
    AND b.bowling_id IS NULL
2
ответ дан 3 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: