[英]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.