SQLite 使用 Select 更新同一个表

Car*_*arl 2 sql sqlite

我正在尝试根据表中的值更新表。

球员夹具

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)

Gor*_*off 5

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)