Используйте NOT EXISTS для авторов, которым не соответствует ни одна книга. Для соавторства проверяйте таблицу связи, а не только поле в books.
-- Вывести авторов, у которых нет книг.
Используйте NOT EXISTS для авторов, которым не соответствует ни одна книга. Для соавторства проверяйте таблицу связи, а не только поле в books.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Используйте NOT EXISTS для авторов, которым не соответствует ни одна книга. Для соавторства проверяйте таблицу связи, а не только поле в books.
Для схемы books(id, author_id):
SELECT a.id, a.name
FROM authors a
WHERE NOT EXISTS (
SELECT 1 FROM books b WHERE b.author_id = a.id
);
Если используется book_authors(book_id, author_id), подзапрос должен искать связь по ba.author_id = a.id. NOT EXISTS корректно выражает отсутствие совпадений и не имеет ловушки NOT IN с NULL в подзапросе. Названия таблиц здесь примерные, так как исходная схема не приложена.