php - 如何在mysql中使用if else语句?

标签 php mysql continuous-integration

在分配 where 条件之前,如何检查 mysql 中的 if else 条件?我需要查询以下逻辑。我使用 php 代码只是为了显示我想做什么。我需要一个 mysql 查询来替换 if else php 代码。我想知道我们是否可以做如果类型等于 1 然后做这个否则做这个并且类型是表的一列。

$this->db->select('startdate, enddate, type');
$this->db->from('db_date')
$this->db->where('id !=', $id);

if(`type`=1){
  $this->db->where("`early` <= ABS(DATEDIFF(STR_TO_DATE(`startdate`, '%m-%d-%Y'),        CURDATE())/30)");
} else if(`type`=2){
  $this->db->where("`last` >= ABS(DATEDIFF(STR_TO_DATE(`startdate`, '%m-%d-%Y'), CURDATE())/30)");
}else do nothing 

最佳答案

你在什么时候使用 CASE

 SELECT CASE 1 WHEN 1 THEN 'one'
    WHEN 2 THEN 'two' ELSE 'more' END;
    'one'

SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
     'true'

SELECT CASE BINARY 'B'
     WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
    NULL

您还可以使用内联(和嵌套)IF

SELECT IF(score > 100, 100, IF(score < 0, 0, score)) FROM exam_results

IF+ WHERE 子句示例:

SELECT ...
 WHERE ...
 AND IF(myfield = 'somevalue', 1, 0) = 1

您可以将这些说明与类似 EXECUTE 的内容结合起来或者这个评估函数: http://code.openark.org/blog/mysql/mysql-eval

结果类似于:

  SELECT CASE 1 WHEN 1 THEN <call eval making a select with one type of where>
        WHEN 2 THEN <call eval making a select with another type of where> END;

我会说这不是很“常规”的东西。

可能有更好、更易于维护的方法来完成您需要的事情。

关于php - 如何在mysql中使用if else语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23102251/

相关文章:

mysql - 需要 Laravel 查询帮助

sql - 如何从服务主体登录名(这是 Azure SQL Server 的 AAD 管理员)创建服务主体 Azure SQL 数据库用户

bash - 如何将非交互式参数传递到使用 "read"的 bash 文件中?

php读取大文本文件日志

php - 是否可以使用 jQuery 加密 AJAX 调用以进行身份​​验证?

mysql - 在配置单元中创建数据库失败

php - 检查数据库表是否存在 - 性能?

continuous-integration - 当另一个构建失败时如何阻止构建?

php - CodeIgniter: stream socket enable crypto SSL/TLS already set up for this stream 警告

php - 显示前 10 个结果,隐藏其余结果?