0

恐ろしくコーディングされたサイトを更新しようとしていますが、この複数の IF ステートメントにエラーがあると思います。私はしばらくの間グーグルをしてきましたが、MySQL UPDATE クエリで複数の IF の例を見つけることができません。

アイデアは、行の別の列に基づいて行の特定の列を更新したいということです。

クエリは次のとおりです。

$sql = "UPDATE `pet_colors` AS c
SET c.inshop = 
IF(c.rarity='1', '25',
IF(c.rarity='2', '10',
IF(c.rarity='3', '3', '1')))
WHERE c.species='{$p->species}' AND c.buyable='1' LIMIT ".rand(1,3));

どんな助けでも大歓迎です。

4

2 に答える 2

1

複雑な IF の代わりに CASE ステートメントを使用しないのはなぜですか? それは「良い」(または悪い、視点の問題)ですが、読みやすいでしょう。

[•••] SET c.inshop = CASE c.rarity WHEN '1' THEN '25' WHEN '2' THEN '10' WHEN '3' THEN '3' ELSE '1' END [•••]
于 2010-02-09T22:26:59.737 に答える
1

いいえ、エラーではなく、ネストされた IF のセットだと思います。私の意見では、ケースステートメントを使用すると理解しやすくなります。

例えば


Case c.rarity
When '1' then '25'
When '2' then '10'
When '3' then '3'
Else '1'
End

于 2010-02-09T22:28:29.203 に答える