当表中的特定列具有特定数据或未填充时,我想从数据库中选择数据。 这是我的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
这是我的输出
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正在显示表中的所有数据
答案 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'