Синтаксическая ошибка при попытке запустить запрос на обновление в MySQL - PullRequest
0 голосов
/ 03 октября 2018

При попытке выполнить запрос, приведенный ниже, я получаю синтаксическую ошибку, мне нужно обновить значение столбца из таблицы civicrm_address и переместить его из базы данных abc_abc_drupal_civi_4_17 в базу данных abc_drupal

Для этого я получаюсинтаксическая ошибка рядом с FROM, я получаю следующую ошибку

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for
 the right syntax to use near 'FROM abc_abc_drupal_civi_4_17.civicrm_address,abc_drupal.civic' at line 3

Как я могу это исправить?

UPDATE abc_drupal.civicrm_address 
SET abc_drupal.civicrm_address.state_province_id = abc_abc_drupal_civi_4_17.civicrm_address.state_province_id
FROM abc_abc_drupal_civi_4_17.civicrm_address,abc_drupal.civicrm_address
WHERE abc_drupal.civicrm_address.state_province_id IS NULL 
AND   abc_abc_drupal_civi_4_17.civicrm_address.state_province_id IS NOT NULL
AND   abc_abc_drupal_civi_4_17.civicrm_address.id = abc_drupal.civicrm_address.id  
AND   abc_abc_drupal_civi_4_17.civicrm_address.contact_id IS NOT NULL;

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

MySQL помещает JOIN в предложение UPDATE, а не через отдельный FROM (FROM используется SQL Server и Postgres).

Ваш запрос в письменном виде трудно расшифровать,Я настоятельно рекомендую использовать псевдонимы таблиц, чтобы запрос был проще написать и прочитать:

UPDATE abc_drupal.civicrm_address a JOIN
       abc_abc_drupal_civi_4_17.civicrm_address aa
       ON aa.id = a.id
    SET a.state_province_id = aa.state_province_id
WHERE a.state_province_id IS NULL 
      aa.state_province_id IS NOT NULL AND   
      aa.contact_id IS NOT NULL;
0 голосов
/ 03 октября 2018

Вам необходимо указать набор позже, как показано ниже:

   UPDATE TABLEA a 
   JOIN TABLEB b ON a.join_colA = b.join_colB  
   SET a.columnToUpdate = [something]



 UPDATE abc_drupal.civicrm_address 
    join abc_abc_drupal_civi_4_17.civicrm_address inner join abc_drupal.civicrm_address
    on abc_abc_drupal_civi_4_17.civicrm_address.id = abc_drupal.civicrm_address.id  
    SET abc_drupal.civicrm_address.state_province_id = abc_abc_drupal_civi_4_17.civicrm_address.state_province_id
where abc_drupal.civicrm_address.state_province_id IS NULL 
    AND  abc_abc_drupal_civi_4_17.civicrm_address.state_province_id IS NOT NULL
    AND  abc_abc_drupal_civi_4_17.civicrm_address.contact_id IS NOT NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...