在分配 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/