2013-07-26 2 views
0

Когда я пытаюсь следующий запрос:ошибка с моей UPDATE запросов MySQL, с большим количеством присоединиться

UPDATE cache_implementation 
SET parent_through_compared_id = ncp.nid, parent_through_feature_id = nfp.nid 
FROM cache_implementation n 
INNER JOIN cache_compare nc ON n.compared_id = nc.nid 
INNER JOIN cache_implementation ncp ON (nc.nid = ncp.compared_id AND n.feature_id = ncp.feature_id) 
INNER JOIN cache_feature nf ON n.feature_id = nf.nid 
INNER JOIN cache_implementation nfp ON (nf.nid = nfp.feature_id AND n.compared_id = nfp.compared_id) 

У меня есть следующее сообщение об ошибке: У вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'FROM cache_implementation n INNER JOIN cache_compare nc ON n.compared_id = nc' в строке 3

С помощью этого запроса я пытаюсь обновить два поля с помощью значение, расположенное в другой таблице, путем массового обновления запроса.

ответ

1

Используется в TSQL. Вот для MySQL.

UPDATE cache_implementation n 
     INNER JOIN cache_compare nc 
      ON n.compared_id = nc.nid 
     INNER JOIN cache_implementation ncp 
      ON (nc.nid = ncp.compared_id AND n.feature_id = ncp.feature_id) 
     INNER JOIN cache_feature nf 
      ON n.feature_id = nf.nid 
     INNER JOIN cache_implementation nfp 
      ON (nf.nid = nfp.feature_id AND n.compared_id = nfp.compared_id) 
SET parent_through_compared_id = ncp.nid, parent_through_feature_id = nfp.nid 
+0

Спасибо, что сделали это :) – user1753847

1

В операторе обновления нескольких таблиц MySQL предложение SET следует за ссылками на таблицы. (Это отличается от синтаксиса, используемого в других базах данных.)

Чтобы исправить ваш оператор, удалите эту первую строку, переместите строку с помощью SET вниз, квалифицируйте ссылки столбца с псевдонимом таблицы и измените FROM на UPDATE. Вуаля.

UPDATE cache_implementation
FROM
cache_implementation n
INNER JOIN ...
INNER JOIN ...

SET n.col = expr, n.col2 = expr

Multi-table update syntax documented here: http://dev.mysql.com/doc/refman/5.5/en/update.html

Смежные вопросы