Я нахожусь в убытке, чтобы выяснить, как сделать ОБНОВЛЕНИЕ с CASE и JOIN. Этот пример из моей базы данных Drupal. content_type
имеет nid
в качестве первичного ключа; term_node
, с другой стороны, может иметь несколько строк с одинаковыми nid
, соответствующих различным tid
. MySQL будет благополучно разобрать запрос, основанный на том, где:Правильный синтаксис для MySQL UPDATE ... JOIN ... CASE?
UPDATE `content_type`
LEFT JOIN `term_node` USING(nid)
SET
`field_m03` = 1
WHERE tid = 696;
Вышеуказанные обновляет все строки в content_type
, которые имеют nid
согласован с (tid = 696)
в term_node
, как это должно. Но когда я пытаюсь выполнить несколько условий с CASE, это не сработает. Ошибок нет, но 0 строк не влияет:
UPDATE `content_type`
LEFT JOIN `term_node` USING(nid)
SET
`field_m03` = (CASE
WHEN (tid = '696') THEN '1'
WHEN (tid = '697') THEN '2'
WHEN (tid = '698') THEN '3'
WHEN (tid = '699') THEN '4'
WHEN (tid = '700') THEN '5'
ELSE `field_m03`
END);
Также попытался без скобок и одиночных кавычек, без изменений.
В какой таблице находится поле_m03? –
'field_m03' из таблицы' content_type' –