Sqlite 使用其他表中的联接和条件(其中)更新表

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 '

我有两张桌子:球队和球员

团队:团队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 '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
)

很抱歉造成混乱。球员很重要,因为我想更新球员所在球队的球员数量。