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.

Другие вопросы по тегам