好的,我在这个论坛上尝试了几乎所有解决方案而无法使其正常运行。我总是得到语法错误。我没有手动加载数据和执行脏工作,而是试图通过仅运行SQL更新查询来实现它。
我有2个表,一个包含字符,另一个包含活动效果。我只会显示重要的字段。
字符
pk name hp location
1 duvack 16 2
2 arielle 51 2
3 Larienna 47 2
效果
pk name HP target_id target_type
4 Paralyze 1 1
5 Seal 1 1
8 Blind 1 1
12 Insanity 1 1
14 Poison -1 1 1
Target_id是"外键"到角色的PK。我要做的是查询字符和效果,并将HP效果修改器应用于字符。所以我基本上通过加入绑定到该角色的所有效果来更新角色hp,并使用效果HP修改角色hp。
例如,根据上述数据," Duvack"因为他中毒,应该减掉1马力。
所以它应该提供这样的查询:
UPDATE character
INNER JOIN effect ON character.pk=effect.target_id
SET character.hp = character.hp + effect.HP
WHERE effect.target_type=1 AND character.location = 2
现在我在" INNER"和"加入"。我得到错误"。" for tablename.fieldname。我尝试在JOIN之前放置SET,但它不起作用。我认为它可能是SQLite的一个限制,它不支持在更新查询中加入。
还有其他建议吗?
答案 0 :(得分:3)
SQLite不支持JOIN
语句中的UPDATE
。
而是将JOIN
替换为相关的SELECT
语句:
UPDATE character
SET hp =
(hp + (SELECT HP FROM effect WHERE effect.target_id = character.pk AND effect.target_type = 1))
WHERE character.location = 2