1

このクエリを試すとき:

 UPDATE l1_a
 SET l1_a.goals_for = l1_a.goals_for + l1_results.score1
 FROM l1_results, l1_a
 WHERE l1_results.team1 = l1_a.team_id;

エラーが発生します:

   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 l1_results, l1_a WHERE l1_results.team1 = l1_a.team_id' at line 3

l1_a には、goals_for と team_id が含まれています

l1_results には、score1 (goals_for の数) と team1 (team_id) が含まれます。

クエリに何か問題がありますか? すべての列とテーブルがクエリで正しい名前であることを再確認しました

ありがとう

4

3 に答える 3

4

documentation for UPDATE、これが複数テーブルUPDATEステートメントの構文であると述べています。

Multiple-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]

これを試して:

 UPDATE l1_results, l1_a
 SET l1_a.goals_for = l1_a.goals_for + l1_results.score1
 WHERE l1_results.team1 = l1_a.team_id;
于 2012-08-27T20:21:05.673 に答える
1

選択構文と更新構文を組み合わせています。from更新ステートメントにはありません。

これを試して:

UPDATE l1_a
SET l1_a.goals_for = l1_a.goals_for + 
  (select l1_results.score1 
  from l1_results 
  where l1_results.team1 = l1a.team_id)

l1_results にレコードがない場合は、データを空にすることができます。IFNULL を追加することをお勧めします。

UPDATE l1_a
SET l1_a.goals_for = l1_a.goals_for + IFNULL(
  (select l1_results.score1 
  from l1_results 
  where l1_results.team1 = l1a.team_id), 0)
于 2012-08-27T20:20:55.360 に答える
0

変化する

UPDATE l1_a
SET l1_a.goals_for = l1_a.goals_for + l1_results.score1
FROM l1_results, l1_a
WHERE l1_results.team1 = l1_a.team_id;

UPDATE l1_a
SET l1_a.goals_for = l1_a.goals_for + l1_results.score1
WHERE l1_results.team1 = l1_a.team_id;

FROM l1_results、l1_aは必要ありません

于 2012-08-27T20:38:47.340 に答える