Будьте в шоке!Что не так со следующим кодом?Ни LEFT JOIN
с NULL
не выбирает Null
строки, ни оператор MYSQL !=
не отображает только несопоставленные строки
Две таблицы
Таблица book
- списки книг
id | ttl
===========
1 | Science
2 | Math
3 | English
Таблица block_book
- списки книг, назначенных каждому блоку
id | block| book
=====================
1 | 1 | 1
2 | 1 | 2
Теперь необходимо показать остальные книги, которые не назначены блокам.Так что я делаю
SELECT
book.id AS id, book.ttl AS book
FROM
block_book
JOIN
book ON book.id != block_book.book
GROUP BY book.id
С оператором !=
это должно быть следующим результатом, не так ли?потому что только тема English
отсутствует в таблице block_book
Ожидаемый результат
id | book
===========
3 | English
Но все книги выбраны. Текущий результат
id | book
===========
1 | Science
2 | Math
3 | English
Я пытался с Left JOIN
с Null
SELECT
book.id AS id, book.ttl AS book
FROM
block_book
LEFT JOIN
book ON book.id = block_book.book
WHERE block_book.book IS NULL
, но он ничего не возвращает
SQLFiddle