我正在尝试更新编码严重的网站,我认为此多重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));
非常感谢任何帮助。
答案 0 :(得分:1)
为什么不使用CASE语句而不是使用imbricated IF?它会“一样好”(或者说是坏的,透视问题),但更容易阅读。
[•••] SET c.inshop = CASE c.rarity WHEN '1' THEN '25' WHEN '2' THEN '10' WHEN '3' THEN '3' ELSE '1' END [•••]
答案 1 :(得分:1)
不,我不认为这是一个错误,而是一组嵌套的IF。在我看来,通过案例陈述会更容易理解。
e.g。
Case c.rarity
When '1' then '25'
When '2' then '10'
When '3' then '3'
Else '1'
End