SQL查询错误 - 从具有条件的表中进行选择

时间:2013-06-21 17:09:46

标签: mysql sql

我目前正试图弄清楚如何制作符合我需求的查询。它必须从生物表中选择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行。

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