0

次のSQLコードがあります。

SELECT
    `table1`.`field1`
    , `view1`.`newfield1`
FROM
    `table1`
INNER JOIN `GCOTDA2`.`view1` 
        ON (`table1`.`id1` = `view1`.`id1`) AND (`table1`.`id2` = `view1`.`id2`);

クエリは正常に機能しますが、view1.newfield1 を table1.field1 にコピーしたいと考えています。したがって、私は次のステートメントを書きました。

UPDATE `table1`
SET
    `table1`.`field1` = `view1`.`newfield1`
FROM
    `table1`
INNER JOIN `view1` 
        ON (`table1`.`id1` = `view1`.`id1`) AND (`table1`.`id2` = `view1`.`id2`);

ただし、更新が機能せず、次のエラー メッセージが表示されました。

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
    `table1`
    INNER JOIN `view1` 
 ' at line 4

このサイトで Google やその他の質問を確認しました。SQL Server で SELECT から更新するにはどうすればよいですか? およびエラーコード:mysqlの1064は運が悪い。(MySQL Server 5.5.27) 照らしてくれる人が必要です、ありがとう!

4

2 に答える 2

1

サブクエリでこれを行うことができます:

update 
    table1
set
    table1.field1 = (select view1.newfield1 from view1 where view1.id1 = table1.id1 and view1.id2 = table1.id2)
where
    exists (select null from view1 where view1.id1 = table1.id1 and view1.id2 = table1.id2)

http://sqlfiddle.com/#!2/64774/1/0

于 2013-11-01T16:40:42.413 に答える