簡體   English   中英

使用 INNER JOIN 更新表 - 幫助!

[英]UPDATE table using INNER JOIN - help!

我想從某個 ID 更新表 'tourneygamesISF' 字段 'op1score' 和 'op2score' 中的表 'tourneyteamsISF' 字段 'pointsfavor' 和 'pointscontra'。

例如:

Table name = tourneygamesISF 

op1(name of row) vs. op2    -  op1score = 25 - op2score =  20

我想更新這個:

op1: (from: tourneygamesISF) = ID in tourneyteamsISF

+ pointsfavor = 25 (to: tourneyteamsISF)
+ pointscontra  = 20 (to: tourneyteamsISF)

op2: (from: tourneygamesISF) = ID in tourneyteamsISF

+ pointsfavor = 20 (to: tourneyteamsISF)
+ pointscontra  = 25 (to: tourneyteamsISF)

到目前為止,我有以下內容

UPDATE tourneyteamsISF 
INNER JOIN tourneygamesISF g1 ON (tourneyteamsISF.ID = g1.op1)
INNER JOIN tourneygamesISF g2 ON (tourneyteamsISF.ID = g2.op2)
SET pointsfavor = pointsfavor 
  + IF(g1.op1score > g1.op2score, g1.op1score - g1.op2score, 0) 
  + IF(g2.op2score > g2.op1score, g2.op2score - g2.op1score, 0)
, pointscontra = pointscontra 
  + IF(g1.op1score < g1.op2score, g1.op2score - g1.op1score, 0) 
  + IF(g2.op2score < g2.op1score, g2.op1score - g2.op2score, 0)
WHERE ID = 1;   

但它給出了錯誤: where子句中的列'ID'不明確

我的表是這樣的:

TABLE tourneyteamsISF
  ID integer autoincrement primary key,
  name varchar,
  pointsfavor integer,
  pointscontra integer

TABLE tourneygamesISF
  ID integer autoincrement primary key,
  op1 integer,
  op2 integer,
  op1score integer, /*score for team1*/
  op2score integer /*score for team2*/

我知道它必須與命名桌隊和游戲的 id 相關,但我感到困惑和困惑。 我會感謝我能得到的所有幫助。

WHERE ID = 1; <-這是你的問題。 在它之前添加表名,它將編譯沒有任何問題。

例如。 WHERE g1.ID = 1;

發生此錯誤是因為 SQL 無法從SELECT語句中的表中識別您要使用的ID列。

它必須是這樣的 - WHERE g1.ID = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM