Sqlite 使用其他表中的联接和条件(其中)更新表
我有两张桌子:球队和球员 团队:团队ID、玩家数量,… 玩家:玩家ID、姓名、姓氏、团队ID…… 我想根据玩家的姓名、姓氏和团队ID更新NumberOfPlayers 这就是我所尝试的:Sqlite 使用其他表中的联接和条件(其中)更新表,sqlite,Sqlite,我有两张桌子:球队和球员 团队:团队ID、玩家数量,… 玩家:玩家ID、姓名、姓氏、团队ID…… 我想根据玩家的姓名、姓氏和团队ID更新NumberOfPlayers 这就是我所尝试的: UPDATE Teams SET NumberOfPlayers = 28 FROM Teams JOIN Players ON Teams.TeamID = Players.TeamID WHERE Players.Name LIKE 'Amata' AND Players.Surname LIKE '
UPDATE Teams
SET NumberOfPlayers = 28
FROM Teams
JOIN Players ON Teams.TeamID = Players.TeamID
WHERE Players.Name LIKE 'Amata' AND Players.Surname LIKE 'Walton' AND Players.TeamID = 3
但我有一个错误:
near "FROM": syntax error: UPDATE Teams
SET NumberOfPlayers = 28
FROM
我还尝试:
UPDATE Teams
JOIN Players ON Teams.TeamID = Players.TeamID
SET NumberOfPlayers = 28
WHERE Players.Name LIKE 'Amata' AND Players.Surname LIKE 'Walton' AND Players.TeamID = 3
我得到的错误是:
near "JOIN": syntax error: UPDATE Teams
JOIN
另一个镜头是:
UPDATE Teams AS T
JOIN Players P ON T.TeamID = P.TeamID
SET T.NumberOfPlayers = 28
WHERE P.Name LIKE 'Amata' AND P.Surname LIKE 'Walton' AND P.TeamID = 3
这导致了我的错误:
near "AS": syntax error: UPDATE Teams AS
问题似乎出现在更新团队之后,但这是一个有效的表。
这可能吗?我错过了什么 您的代码有点奇怪,因为您已经知道要更新的计数和球队ID,所以我不知道为什么球员很重要 此外,我还担心您可能会使用firstname/lastname作为密钥,我强烈建议您不要这样做。此外,如果希望字符串上有精确匹配,则引用“=”。请参见此处的详细信息: 但我相信这是你技术上的疑问 有些关系数据库支持更新时的FROM/JOIN(如SQLServer),所以不支持(如Oracle)。SQLite不支持这种语法
UPDATE Teams
SET NumberOfPlayers = 28
Where TeamId In
(SELECT TeamId From Players
WHERE Players.Name LIKE 'Amata' AND Players.Surname LIKE 'Walton' AND Players.TeamID = 3
)
很抱歉造成混乱。球员很重要,因为我想更新球员所在球队的球员数量。