私はCASEとJOINを使ってUPDATEを行う方法を理解していません。この例は私のDrupalデータベースからのものです。 content_type
のプライマリキーはnid
です。一方、term_node
は、同じnid
が異なるtid
に一致する複数の行を持つことができます。 MySQLは喜んでWHEREに基づいてクエリを解析します:MySQL UPDATE ...の正しい構文... JOIN ... CASE?
UPDATE `content_type`
LEFT JOIN `term_node` USING(nid)
SET
`field_m03` = 1
WHERE tid = 696;
上記アップデートterm_node
に(tid = 696)
にマッチしたnid
を持ってcontent_type
のすべての行を、それが必要として。 しかし、私は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);
括弧と一重引用符を使用せずに変更しても、変更は必要ありません。
field_m03はどのテーブルですか? –
'field_m03'は' content_type'テーブルからです –