我正在尝试根据表中的值更新表。
球员夹具
PlayerFId
FixtureFId
Availability
SelectedPosition
Run Code Online (Sandbox Code Playgroud)
我想更新玩家 ID 相同的所有行,并从之前的固定装置 ID 中获取值。
示例数据
PlayerFId Fixture FId Availability SelectedPosition
1 1 N 2
1 2 U 0
2 1 A 3
2 2 U 0
Run Code Online (Sandbox Code Playgroud)
我想使用 FixtureId 1 的相关 PlayerFId 数据更新 FixtureFId 2 的所有行。
最终结果
PlayerFId Fixture FId Availability SelectedPosition
1 1 N 2
1 2 N 2
2 1 A 3
2 2 N 3
Run Code Online (Sandbox Code Playgroud)
我尝试过使用此 SQL,但它没有正确映射 PlayerFId 值
UPDATE player_fixture
SET
Availability = (SELECT Availability FROM player_fixture WHERE FixtureFId = 1),
SelectedPosition = (SELECT SelectedPosition FROM player_fixture WHERE FixtureFId = 1)
WHERE FixtureFId = 2
Run Code Online (Sandbox Code Playgroud)
SQLite 不允许join在更新中使用 s。但它确实允许您使用单个子查询更新多个列:
UPDATE player_fixture
SET (availability, selectedposition) =
(SELECT pf.availability, pf.selectedposition
FROM player_fixture pf
WHERE pf.playerfid = player_fixture.playerfid AND
pf.fixturefid = 1
)
WHERE fixturefid = 2;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4313 次 |
| 最近记录: |