0

私は現在のコードを持っています、

UPDATE i
SET LeadInventor = 
    CASE 
        WHEN gs.FirstInventorName IS NULL THEN 'No' 
        ELSE 'Yes' 
    END
FROM patentdb.Inventor i
    LEFT JOIN patentdb.generalsource gs
    ON i.InventorFirst + ' ' + i.InventorLast = gs.FirstInventorName

そして、なぜそれが次のエラーをスローするのか理解できません:

Error Code: 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 patentdb.Inventor i     LEFT JOIN patentdb.generalsource gs     ON i.Invent' at line 7

FROMステートメントはMYSQLが下線を引いているものです

4

2 に答える 2

1

これは、FROM 句が MySQL UPDATE ステートメントで有効でないためです。

http://dev.mysql.com/doc/refman/5.6/en/update.html

これで運が良くなるかもしれません:

UPDATE Inventor i, generalsource gs
SET i.LeadInventor = CASE
  WHEN gs.FirstInventorName IS NULL THEN 'No'
  ELSE 'Yes'
END
WHERE i.InventorFirst + ' ' + i.InventorLast = gs.FirstInventorName
于 2012-12-05T19:54:27.683 に答える
0

構文が正しくありません。このクエリを見てください:

UPDATE patentdb.Inventor i
  LEFT JOIN patentdb.generalsource gs
  ON CONCAT(i.InventorFirst, ' ', i.InventorLast) = gs.FirstInventorName
SET LeadInventor = 
  CASE WHEN gs.FirstInventorName IS NULL THEN 'No' ELSE 'Yes' END

また、MySQL では CONCAT 関数を使用して新しい文字列を作成する方が良いと言いたいです。

于 2012-12-05T20:34:36.937 に答える