SQL指定日期或为空时从表中选择数据

时间:2018-01-22 17:56:59

标签: mysql sql

当表中的特定列具有特定数据或未填充时,我想从数据库中选择数据。 这是我的sql代码:

SELECT
bus.bus_id,
bus.seats,
entity.entityid,
entity.company_name,
entity.logo AS companylogo,
route.start_point,
route.drop_point,
route.boarding_time,
route.arrival_time,
FROM
loading_buses
INNER JOIN bus ON loading_buses.bus_id = bus.bus_id
INNER JOIN route ON loading_buses.route_id = route.route_id
INNER JOIN entity ON bus.entity = entity.entityid AND route.entity_id = 
entity.entityid
WHERE
loading_buses.`current_date` ='23/1/2018' OR
loading_buses.`current_time` >= '00:00' AND
route.start_point = 'accra' AND
route.drop_point = 'kumasi'
ORDER BY
route.price ASC

这是我的输出

SQL OUTPUT

1   49  1   STC assets/images/stc.png   accra   kumasi  1/17/2018 20:00 1/18/2018 00:00 20          9/18/2017   7/18/2017
2   15  1   STC assets/images/stc.png   accra   kumasi  1/17/2018 20:00 1/18/2018 00:00 20          9/18/2017   7/18/2017
3   55  1   STC assets/images/stc.png   accra   kumasi  1/17/2018 20:00 1/18/2018 00:00 20          9/18/2017   7/18/2017

在我的数据库中,列当前日期具有必须显示的特定日期,具体取决于插入的日期,或者如果列中没有日期,则必须显示该日期。 因此,总之,查询显示的结果仅显示指定日期的数据和null。但是Query正在显示表中的所有数据

3 个答案:

答案 0 :(得分:0)

如果要检查null,则应使用is null

WHERE  loading_buses.`current_date` ='23/1/2018' OR
     loading_buses.`current_time`  is null

或根据您的评论,您可以使用

WHERE  loading_buses.`current_date` ='23/1/2018' AND
     loading_buses.`current_time`  is null

答案 1 :(得分:0)

current_date用作关键字来定义许多数据库中的系统日期。所以,请确保不是这里的情况。

current_date =' 23/1/208' ---在这种情况下更改日期值,看它是否仍然返回所有数据。

另外,注释掉这个条件--- loading_buses。current_time> =' 00:00' 因为所有行都满足这个条件。

答案 2 :(得分:-1)

您必须使用()对您的OR进行分组:

WHERE
(loading_buses.`current_date` ='2018-01-23' OR loading_buses.`current_date`  is null)
AND
route.start_point = 'accra' AND
route.drop_point = 'kumasi'