php - 使用 INNER JOIN 更新表 - 帮助!

标签 php mysql sql mysql-error-1052

我想更新来自某个 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;   

但它给出了错误:Column 'ID' in where clause is ambiguous

我的表格是这样的:

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 列。

关于php - 使用 INNER JOIN 更新表 - 帮助!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6507398/

相关文章:

PHP - 读取和写入相同的文件挂起

php - 在php中用txt文件更新SQL

mysql:复制数据或 LIKE 子句

sql - SELECT MAX() 太慢 - 有其他选择吗?

php - WooCommerce 预订 : adding and reordering item data in cart and checkout

php - 使用 Git 设置 Laravel 项目

sql - 这个 SQL 语法是如何工作的?

mysql - 如何连接所有右表必须位于集合中的记录?

javascript - jQuery DataTable 从搜索中重新填充表

MySQL:从记录集中选择具有表名的表