0

現在、自分のニーズに合ったクエリを作成する方法を見つけようとしています。modelidid = 553 のクリーチャー テーブルからを選択し、選択displayidした ID でcreative_template テーブル列を更新する必要がありますが、entry = 100098 の場合のみです。

私はこのSQLを書きました:

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

ただし、データベースに追加すると、次のエラーが発生します。

サブクエリは複数の行を返します。

4

1 に答える 1

0

サブクエリは複数の値を返します。creatureつまり、フィールドが 553 に等しい行が複数ありmapます。このクエリは、その行の 1 つだけを更新します。

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 に答える