mysql - 这个 MySQL 查询有问题吗?

标签 mysql conditional-operator

我正在尝试更新一个编码非常糟糕的网站,并且我认为这个多个 IF 语句中有一个错误。我已经在 Google 上搜索了一段时间,但找不到 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));

非常感谢任何帮助。

最佳答案

不,我不认为这是一个错误,而是一组嵌套的 IF。我认为用案例陈述会更容易理解。

例如


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

关于mysql - 这个 MySQL 查询有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2232958/

相关文章:

MySQL触发根据另一个表的列总和更新字段

javascript - 是否有像条件运算符一样缩短 if 语句的语法?

javascript - 'null 的数值表现不同

c# - Windows 窗体中检查 DrawItemState 等效性的条件表达式的含义是什么?

c - 表达式 a<=20?b=30 怎么写 :c=30; such that 30 is used only once?

php - 使用PHP获取本地PC中的ODBC数据源列表

php - 更新方法在 codeigniter 中不起作用

php - Laravel 迁移无法在使用 MySQL RDS DB 的 LAMP AWS 实例中工作 --> SQLSTATE[HY000] [2002] 连接超时

mysql - 如何通过 LinqPad 连接到 MySQL?

java - 为什么三元运算符会意外地转换整数?