Что-то не так с этим запросом MySQL? - PullRequest
0 голосов
/ 10 февраля 2010

Я пытаюсь обновить сайт, который был ужасно закодирован, и я думаю, что в этом множественном утверждении IF есть ошибка. Я давно гуглю и не могу найти ни одного примера нескольких IF в запросе MySQL UPDATE.

Идея состоит в том, что мы хотим обновить определенный столбец строки на основе другого столбца строки.

Вот запрос:

$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));

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 10 февраля 2010

Нет, я не думаю, что это ошибка, а скорее набор вложенных IF. На мой взгляд, это было бы легче понять с помощью описания случая.

, например

<code>
Case c.rarity
When '1' then '25'
When '2' then '10'
When '3' then '3'
Else '1'
End
1 голос
/ 10 февраля 2010

Почему бы не использовать оператор CASE вместо встроенных IF? Это было бы «так же хорошо» (или как плохо, вопрос перспективы), но легче для чтения.

[•••] SET c.inshop = CASE c.rarity WHEN '1' THEN '25' WHEN '2' THEN '10' WHEN '3' THEN '3' ELSE '1' END [•••]
...