繁体   English   中英

如何在 mysql 查询中的 where 条件下使用 if else?

[英]How can I use if else in where condition in mysql query?

如何使用if else条件语句从这two queriesmake one query

// end date Yes inserted....!
$query = "SELECT * FROM event WHERE DATE(end_date) != '1970-01-01' AND 
DATE(end_date) < CURDATE() 
AND is_deleted=0 ";

// end date not inserted....!
$query2 = "SELECT * FROM event WHERE DATE(end_date) = '1970-01-01' AND 
DATE(start_date) < CURDATE() 
AND is_deleted=0 ";

这是我的活动表。

+-------------------------+------------------+------+-----+---------+----------------+    
| Field                   | Type             | Null | Key | Default | Extra          |
+-------------------------+------------------+------+-----+---------+----------------+
| id                      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| user_id                 | int(10) unsigned | NO   | MUL | NULL    |                |
| start_date              | datetime         | NO   | MUL | NULL    |                |
| end_date                | datetime         | NO   |     | NULL    |                |
| created                 | datetime         | NO   |     | NULL    |                |
+-------------------------+------------------+------+-----+---------+----------------+

我想要这样的东西。

$query = "SELECT * FROM event WHERE
IF 
DATE(end_date) != '1970-01-01' 
THEN
AND DATE(end_date) < CURDATE() AND is_deleted=0 
ELSE
DATE(end_date) = '1970-01-01' 
THEN
AND DATE(start_date) < CURDATE() AND is_deleted=0";

对不起我的英语不好。 我在数据库 MySQL 方面没有太多专业知识。 请指导一下。 如果你还需要什么我可以详细说明。

试试这个查询:

$query = "SELECT * FROM event 
WHERE ((DATE(end_date) != '1970-01-01' AND DATE(end_date) < CURDATE()) OR ( DATE(end_date) = '1970-01-01' AND DATE(start_date) < CURDATE() ))
AND is_deleted=0 ";

你想要or

select *
from events
where 
    is_deleted = 0
    and (
        (date(end_date) != '1970-01-01' and date(end_date) < curdate())
        or (date(end_date) = '1970-01-01' and date(start_date) < curdate()
    )

以下If条件解决您的问题

SELECT * FROM event WHERE  IF((DATE(end_date) != '1970-01-01'),DATE(end_date) < CURDATE(),DATE(start_date) < CURDATE()) AND is_deleted=0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM