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

为什么不使用 CASE 语句而不是叠瓦式 IF?这将是“一样好”(或一样坏,观点问题),但更容易阅读。

[•••] 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 回答