如何使用相关子查询进行更新?
How to Update using a Co-Related subquery?
注意:这不是作业。我已将我的情况简化为通用表格。
所以我有两张桌子。 Table 1 和 Table2。
table1 中的 VALUE1 是我要设置的。
计算方式为 VALUE1 = Apples(VALUE2)-Oranges(VALUE3)
TABLE1
ID INT //PRIMARY KEY
VALUE1 INT
VALUE2 INT //FOREIGN KEY TO TABLE2
VALUE3 INT //FOREIGN KEY TO TABLE2
.
TABLE2
ID INT //PRIMARY KEY
APPLES INT
ORANGES INT
.
这让我想到了这个问题。如何使用关联子查询进行更新?
这是我试过的,
它执行没有错误,但值保持不变。我觉得很奇怪。
UPDATE TABLE1 AS X
SET VALUE1=
(SELECT APPLES FROM TABLE2 WHERE ID = X.VALUE2)
-
(SELECT ORANGES FROM TABLE2 WHERE ID = X.VALUE3)
WHERE X.ID=12;
使用 JOIN
而不是相关子查询:
UPDATE TABLE1 AS x
JOIN TABLE2 AS y1 ON y1.id = x.value2
JOIN TABLE2 AS y2 ON y2.id = x.value3
SET value1 = y1.apples = y2.oranges
WHERE x.id = 12
注意:这不是作业。我已将我的情况简化为通用表格。
所以我有两张桌子。 Table 1 和 Table2。
table1 中的 VALUE1 是我要设置的。
计算方式为 VALUE1 = Apples(VALUE2)-Oranges(VALUE3)
TABLE1
ID INT //PRIMARY KEY
VALUE1 INT
VALUE2 INT //FOREIGN KEY TO TABLE2
VALUE3 INT //FOREIGN KEY TO TABLE2
.
TABLE2
ID INT //PRIMARY KEY
APPLES INT
ORANGES INT
.
这让我想到了这个问题。如何使用关联子查询进行更新?
这是我试过的,
它执行没有错误,但值保持不变。我觉得很奇怪。
UPDATE TABLE1 AS X
SET VALUE1=
(SELECT APPLES FROM TABLE2 WHERE ID = X.VALUE2)
-
(SELECT ORANGES FROM TABLE2 WHERE ID = X.VALUE3)
WHERE X.ID=12;
使用 JOIN
而不是相关子查询:
UPDATE TABLE1 AS x
JOIN TABLE2 AS y1 ON y1.id = x.value2
JOIN TABLE2 AS y2 ON y2.id = x.value3
SET value1 = y1.apples = y2.oranges
WHERE x.id = 12