У меня проблема в MySQL при попытке выбрать конкретную запись из таблицы, которая не находится в другой таблице. Я знаю, что это предложение звучит орехами, но вот пример того, что я пытаюсь сделать.
Пользователи таблицы:
user_id,username,password (plus other columns not important to this)
Настольные статьи:
article_is,user_id,content (plus others)
Представления таблиц (используемые для хранения данных, если пользователь просматривает конкретную статью):
view_id,article_id,user_id,date
Теперь я пытаюсь выбрать тех пользователей, которые НЕ читали определенную статью, например статью с идентификатором 10. Таким образом, они не имеют записи в таблице представлений.
Надеюсь, теперь это имеет смысл. Спасибо за ваши ответы. V.
SELECT user_id FROM users u LEFT JOIN views v ON v.user_id=u.user_id AND v.article_id = 10 WHERE v.user_id IS NULL
Попробуй это:
SELECT user_id FROM users WHERE user_id NOT IN ( SELECT user_id FROM views WHERE article_id = 10 )
делать запросы NOT IN обычно не подходят для производительности … вместо этого использование LEFT JOIN и поиск NULL было бы лучше.
select u.User_ID from Users U LEFT JOIN Views V on U.User_ID = V.User_ID AND v.Article_ID = 10 where V.User_ID IS NULL