2014-11-14 3 views
0

На основании этого post это должно работать, но он не работает правильно:SqL обновить таблицу на основе значений объединения из другой таблицы

UPDATE `cms_download` 
SET folder_id = '230' 
FROM `cms_download` file 
LEFT JOIN `cms_download_folder` folder 
ON file.folder_id = folder.folder_id 
WHERE file.client_id = '69' 
AND folder.folder_id = NULL 

Что у меня есть таблица файлов (cms_download) который содержит столбец, который ссылается на папку, содержащую этот файл (cms_download_folder). И то, что я пытаюсь сделать, это установить все файлы, у которых нет папки, назначенной им в определенную папку. Я могу знать, что по левому или правому соединению в двух таблицах вместе с идентификатором папки и где эта запись не существует в таблице (cms_download_folder) против записи в (cms_download) таблице, я бы изменил folder_id в (cms_download), чтобы он ссылался на запись, которая существует.

Надеюсь, у меня есть смысл.

Благодаря Гордон, я получил правильный запрос, который:

UPDATE `cms_download` file 
LEFT JOIN `cms_download_folder` folder 
ON file.folder_id = folder.folder_id 
SET file.folder_id = '230' 
WHERE file.client_id = '69' 
AND folder.folder_id = NULL 

ответ

1

Вопрос заключается в том, что вы используете синтаксис SQL Server, но ваш пост маркируется MySQL. join идет до set в MySQL:

UPDATE `cms_download` file LEFT JOIN 
     `cms_download_folder` folder 
     ON file.folder_id = folder.folder_id 
    SET folder_id = '230' 
WHERE file.client_id = '69' AND folder.folder_id = NULL; 
+0

Спасибо, однако в этом случае я не нуждался бы в 'ОТ cms_download File'. Я напишу окончательный запрос в своем вопросе, потому что я не могу его правильно отформатировать. –

+0

@NaguibIhab. , , Верный. Это была ошибка копирования и вставки. –