Как удалить строку, используя NOT IN из нескольких таблиц

0

Как использовать несколько NOT IN в sql

DELETE FROM courses
    WHERE course_id
        NOT IN
        (SELECT course_id FROM enrollment)
        AND course_id = $id

Некоторые из методов, которые я пытался

DELETE FROM courses
    WHERE course_id
        NOT IN
        ((SELECT course_id FROM enrollment) || (SELECT courseid FROM fees))
        AND course_id = $id  

DELETE FROM courses
    WHERE course_id
        NOT IN (SELECT course_id FROM enrollment)
        OR 
        NOT IN (SELECT courseid FROM fees)
        AND course_id = $id

DELETE FROM courses
    WHERE course_id
        NOT IN
        (SELECT course_id FROM enrollment WHERE course_id = $id
        UNION
        SELECT courseid FROM fees WHERE courseid = $id)
  • 0
    Есть ли какие-либо сообщения об ошибках при использовании некоторых запросов, которые вы пробовали?
  • 0
    Нет ошибок но строка не удаляется.
Показать ещё 2 комментария
Теги:
mysqli

1 ответ

1
Лучший ответ

Нижеследующее должно работать нормально:

DELETE FROM courses
WHERE course_id NOT IN (SELECT course_id FROM enrollment)
  AND course_id NOT IN (SELECT courseid FROM fees)
  AND course_id = $id

Если он по-прежнему не работает для вас, я предлагаю изменить DELETE на SELECT course_id и добавлять/удалять условия один за другим, пока вы не поймете, что происходит в вашем запросе.

Кроме того, если вы хотите использовать OR s и AND в одном запросе, рекомендуется использовать скобки, чтобы было легче читать порядок, в котором условия проверяются.

  • 0
    Работает. Отлично. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню