Я затрудняюсь понять, как сделать ОБНОВЛЕНИЕ с помощью CASE и JOIN.Этот пример взят из моей базы данных Drupal.content_type
имеет nid
в качестве первичного ключа;term_node
, с другой стороны, может иметь несколько строк с одинаковыми nid
, сопоставленными с различными tid
с.MySQL с радостью проанализирует запрос на основе WHERE:
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);
Также пробовали без скобок и одинарных кавычек, без изменений.