【发布时间】:2015-03-07 05:54:11
【问题描述】:
我已经尝试过这里的所有东西:Update rows from another table 没有成功。
我正在使用 SQLite,并且正在使用 SQLite 数据库浏览器执行查询。
我有 3 个表 Off、Vio 和 Loc 有这样的数据
Off(Aid,ox,oy):
0 0 0
1 100 100
2 200 200
Vio(Vid,Aid):
0 0
1 1
2 2
3 1
Loc(vid,x,y):
0 1 2
1 5 6
2 9 1
2 2 3
3 4 4
Aid 在 Off 中是主键,在 Vio 中是外键。 Vid 在 Vio 中是主键,在 Loc 中是外键。
我想更新 Loc 行,将正确的 ox 和 oy 添加到 x 和 y 值以获得类似结果:
"updated" Loc(vid,x,y)
0 1 2
1 105 106
2 209 201
2 202 203
3 104 104
我试过这个:
WITH CTE AS (
SELECT Loc.x, Loc.y, Off.ox AS offx, Off.oy AS offy
FROM Loc, Vio, Off
WHERE Vio.Aid=Off.Aid AND Vio.vid=Loc.vid
)
UPDATE CTE
SET x= x + offx, y= y + offy
还有这个:
UPDATE Loc, Off
SET x=x+Off.ox, y=y+Off.oy
FROM (
SELECT Off.ox, Off.oy
FROM Loc, Vio, Off
WHERE Vio.Aid = Off.Aid AND Vio.vid=Loc.vid
)
在 SQLite 数据库浏览器中,即使 SELECT 查询为我提供了更新所需的所有数据,也没有成功。
【问题讨论】:
-
UPDATE JOIN SQLITE的可能重复