我目前正在尝试弄清楚如何进行适合自己需求的查询。它必须从id = 553的生物表中选择一个modelid
,并用其已选择的ID(但仅当entry = 100098时)更新生物模板表列displayid
。
我写了这个SQL:
UPDATE `creature_template`
SET `modelid1` = (SELECT `modelid`
FROM `creature`
WHERE `map` = 553)
WHERE `entry` = 100098
但是,当我将其添加到数据库中时,出现此错误:
子查询返回1行以上。
最佳答案
您的子查询返回多个值。这意味着creature
中有多于一行的行,其中map
字段等于553。此查询将仅更新其中的一行。
UPDATE `creature_template`
SET `modelid1` = (SELECT `modelid`
FROM `creature`
WHERE `map` = 553
LIMIT 1
)
WHERE `entry` = 100098
但是,如果需要使用
map
= 553更新所有行,则应使用IN
原因:UPDATE `creature_template`
SET `modelid1` IN (SELECT `modelid`
FROM `creature`
WHERE `map` = 553
)
WHERE `entry` = 100098
关于mysql - SQL查询错误-从具有条件的表中选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17240768/