SQL 语句之 ‘OR‘

修数据时需特别注意,如果sql语句中存在 or 连接条件,一定要加小括号,重中之重。

1、如下没加小括号:
SELECT
	*
FROM
	e_storage_cost_batch
WHERE
	batch_number IN (
	SELECT
		e1.batch_number 
	FROM
		e_storage_cost_batch e1
		JOIN e_storage_cost_batch_init e2 ON e1.warehouse_id = e2.warehouse_id 
	WHERE
		e1.batch_type = 'shipment' or e1.batch_type = 'adjustment'
		AND e1.create_time < e2.create_time
	); 

查询出来的数据有1038条,并且还有与条件中 batch_type 中值,不一致的情况,如下图:
Snipaste_2021-05-10_22-57-36.png

2、加了小括号之后,如下:
SELECT
	*
FROM
	e_storage_cost_batch
WHERE
	batch_number IN (
	SELECT
		e1.batch_number 
	FROM
		e_storage_cost_batch e1
		JOIN e_storage_cost_batch_init e2 ON e1.warehouse_id = e2.warehouse_id 
	WHERE
		( e1.batch_type = 'shipment' or e1.batch_type = 'adjustment' )
		AND e1.create_time < e2.create_time
	); 

没有任何记录,如下图:
Snipaste_2021-05-10_23-00-56.png

总结:

只要sql语句中存在 ‘or’ ,一定要检查是否需要加小括号;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BrightChen666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值