关于mysql OR使用的细节,加上()避免OR扩大sql查询范围

文章讲述了在SQL查询中,未正确使用括号导致业务逻辑错误:OR条件扩大了查询范围,即使有截止日期过滤,仍返回过期订单。作者强调了括号在处理OR条件时的重要性,以防止这类隐藏错误。
摘要由CSDN通过智能技术生成

 错误场景描述:现在在我的预约订单里面截止日期明明已经超过了当前时间却还显示,这个时候正常逻辑是只显示在历史订单中的。 

错误归因:关于下面这段查询中 这一组条件加上()与不加上括号天差地别,也是导致业务错误的原因。

解决办法: 标红的条件加上(),此时截止入场时间超过当前时间的预约订单就没有在预约订单出现了,而只出现在历史订单中(也就是过期订单)

SELECT ro.*, pa.location, pl.place_code, pl.floor, pa.lng AS parkingLng, pa.lat AS parkingLat 
FROM reserve_order ro LEFT JOIN parking pa 
ON ro.parking_id = pa.id LEFT JOIN place pl 
ON ro.place_id = pl.id 
WHERE ro.del_flag = '0' 
AND (ro.create_by = '13986915552' OR ro.ordering_user = '13986915552' )
AND ro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值