php - 我如何在 mysql 中执行此三元运算?

标签 php mysql

....
.....
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/

相关文章:

mysql - 用于添加第二个节点的 SQL 查询

mysql - 在巨大的生产表上创建索引

mysql - 我应该锁定 ISAM 表以将值插入到唯一键字段吗?

php - 基于 Woocommerce 3 中的数量的购物车商品折扣

php - 如何在 PHP 5.3 中强制使用 error_reporting 模式

php - 可以从脚本运行 PHPUnit 测试吗?

SQL查询中的PHP if语句

php - 根据今天的日期选择 id

php - 如何使用php从手机获取手机收件箱消息到数据库?

php - SQLSTATE[42000] : Syntax error or access violation :