....
.....
if ($prod_price->RecordCount()>0) {
$p_price = $prod_price->fields['options_values_price'];
}
else
{
$p_price = $orders_products_query->fields['products_price'];
}
$p_price = ($p_price>0)?$p_price:$orders_products_query->fields['final_price'];
......
..........
您可以从上面猜到,我正在运行两个不同的查询并检查 3 个字段以确定 PHP 中的变量 $p_price。我想在一个查询中压缩它,条件是: 如果field1为Null,则使用field2,如果field2为0,则使用field 3。
第一部分可以用 IFNULL(field1,field2) 来解决....但是我该如何处理第二部分呢?我应该使用案例吗?就执行速度而言,我需要最有效的解决方案,因为这是一个非常大的查询的一部分。
编辑:
由于你们中的一些人似乎不清楚这个问题,因此将其作为替代方案。
IF(IFNULL(field1,field2)>0,IFNULL(field1,field2),field3)
上面的 MySQL 查询条件适用于上述逻辑,但如您所见,它两次评估 field1 和 field2 以进行 NULL 检查,我认为这不是很有效,所以我正在寻找更好的查询/条件来重写同样的事情。
最佳答案
您可以在 MySQL 中使用 IF(condition, val-if-true, val-if-false)
。
您还可以嵌套 IF()
函数,如下所示:
IF(field1 IS NOT NULL, field1, IF(field2 <> 0, field2, field3))
这对应于:
- 如果 field1 不为 NULL,则使用 field1,否则...
- 如果 field2 不为零,则使用 field2,否则...
- 使用字段 3
关于php - 我如何在 mysql 中执行此三元运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17482003/