我目前正试图弄清楚如何制作符合我需求的查询。它必须从生物表中选择id为{553的modelid
并使用其选择的ID更新creature_template表格列displayid
,但仅限于条目= 100098。
我写了这个SQL:
UPDATE `creature_template`
SET `modelid1` = (SELECT `modelid`
FROM `creature`
WHERE `map` = 553)
WHERE `entry` = 100098
但是当我将它添加到我的数据库时出现此错误:
子查询返回超过1行。
答案 0 :(得分:0)
您的子查询返回多个值。也就是说,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