Установите для 1 столбца запроса MYSQL значение Null - PullRequest
1 голос
/ 08 октября 2009

У меня есть следующий запрос MYSQL, который при выполнении показывает все недействительные Comment_ID s в таблице Order_Info, которых нет в таблице Order_Comments Как бы я изменил этот запрос, чтобы установить для Comment_ID значение NULL для каждой найденной записи?

   SELECT Order_Info.* 
     FROM Order_Info 
LEFT JOIN Order_Comments ON Order_Info.COMMENT_ID = Order_Comments.Comment_ID
    WHERE Order_Comments.Comment_ID IS NULL 
      AND Order_Info.COMMENT_ID IS NOT NULL

Таблица Order_Comments выглядит следующим образом:

Comment_ID  Order_Number    Order_Comments
14          8989        Submitted by Gordon, Customer Se...
15          4544        Please include the cd when the b...
17          8787        Previously ordered by company, a...
23          8789        We downloaded the trial. Our is q...

Ответы [ 2 ]

1 голос
/ 09 октября 2009

Вы можете написать оператор обновления с коррелированным подзапросом, который используется в предложении where

UPDATE Order_Info oi
SET comment_ID = NULL
WHERE NOT EXISTS (
    SELECT *
    FROM Order_Comments oc
    WHERE oc.comment_ID = oi.comment_ID)

Простым английским языком: в OrderInfo установите для commentID значение null, если в OrderComments нет соответствующих записей для этих строк commentID).

Оператор должен быть стандартным SQL, а не специфичным для mySQL.

0 голосов
/ 09 октября 2009

Мое решение было скорее обходным путем.

  1. Экспорт запроса выше в файл CSV, открытие в OpenOffice Calc и удаление поля comment_ID, оставляя заголовок без изменений
  2. Запустите запрос и удалите результаты из таблицы Order_Info
  3. Импортируйте новый CSV-файл, созданный на шаге 1, и добавьте его с помощью NaviCat

Так что, возможно, не идеальное решение, но оно сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...