Rails sql внутреннее объединение: как можно исключить все строки с одинаковым идентификатором, если только 1 строка соответствует исключенному условию? - PullRequest
0 голосов
/ 09 марта 2020

Допустим, у меня есть внутреннее соединение между таблицей Animals и таблицей AnimalType, где отображаются записи, подобные приведенным ниже:

╔════════════╦══════════════╗
║ animal_id  ║ animal_type  ║
╠════════════╬══════════════╣
║          1 ║ land         ║
║          1 ║ 4 legs       ║
║          1 ║ below 10 kgs ║
╚════════════╩══════════════╝

Я хочу исключить все 3 строки, поскольку идентификатор животного 1 «меньше 10 кг»

Я знаю, что если попробовать smt как «where animal_type! = 'Весом менее 10 кг” », то из записей внутреннего объединения будет исключена только 1 строка.

Большое спасибо!

1 Ответ

4 голосов
/ 09 марта 2020

Вы можете использовать существующую логику c здесь:

SELECT *
FROM yourTable t1
WHERE NOT EXISTS (SELECT 1 FROM yourTable t2
                  WHERE t2.animal_id = t1.animal_id AND
                        t2.animal_type = 'below 10 kgs');

Демо

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

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