我目前正在尝试弄清楚如何进行适合自己需求的查询。它必须从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/

10-14 16:20
查看更多