0

我目前正在尝试弄清楚如何进行符合我需求的查询。它必须modelid从 id = 553 的生物表中选择一个,并使用它选择的 id 更新生物模板表列displayid,但前提是 entry = 100098。

我写了这个 SQL:

UPDATE `creature_template`
    SET `modelid1` = (SELECT `modelid`
                     FROM `creature`
                     WHERE `map` = 553)
    WHERE `entry` = 100098

但是,当我将它添加到我的数据库时出现此错误:

子查询返回超过 1 行。

4

1 回答 1

0

您的子查询返回多个值。creature这意味着,字段等于 553的行不止一行。map此查询将仅更新其中一行。

UPDATE `creature_template`
    SET `modelid1` = (SELECT `modelid`
                     FROM `creature`
                     WHERE `map` = 553
                     LIMIT 1
    )
    WHERE `entry` = 100098

但是如果你需要用map=553更新所有行,你应该使用INcause:

UPDATE `creature_template`
    SET `modelid1` IN (SELECT `modelid`
                     FROM `creature`
                     WHERE `map` = 553
    )
    WHERE `entry` = 100098
于 2013-06-21T17:10:52.413 回答