MySQL Left Join с несколькими строками
Я хочу объединить 2 таблицы, но вторая таблица имеет отношение один ко многим. Могу ли я опустить всю строку, если какая-либо из строк имеет определенное значение? Позвольте мне объяснить больше.
User table
id name email
1 bob bob@test.com
2 foo foo@test.com
Music table
id userId
1 1
1 2
2 1
3 1
2 2
Скажем, я не хочу, чтобы он показывал пользователю, имеет ли он отношение к идентификатору музыкальной таблицы 2. Также ищет отдельного пользователя.
Если я попробую что-то подобное, это все равно покажет обоим пользователям.
SELECT * FROM users u LEFT JOIN music m ON u.id = m.userId WHERE m.id <> 3
Я хочу, чтобы он проверил все строки, и если он имеет идентификатор 3, он не будет отображаться. Надеюсь, я понял. Большое спасибо.
1 ответ
Решение
Попробуйте использовать подзапрос следующим образом:
SELECT * FROM users
WHERE id NOT IN (SELECT userId FROM music WHERE id=3)
Этот запрос означает выбор всех пользователей, если их идентификатор не связан с music.id 3.