mysql - 选择在 2 个日期之间,但也选择 NULL 值
问题描述
我正在尝试运行一个查询,在其中选择 2 个值之间的日期
OR ( `order_products`.`deleted_at` BETWEEN
'2021-01-01 00:00:00' AND '2021-07-28 23:59:59' )
但我还需要收集具有 NULL 值的 order_products。
这有可能吗,就像我放一个
OR `order_products`.`deleted_at` IS NULL
在我的代码中,它似乎只返回了数据库中的所有内容:-(
我当前的代码,对于上下文是:
SELECT
`orders`.`id`,
`orders`.`reference`,
`orders`.`order_date`,
`orders`.`cancellation_date`,
`order_products`.`description`,
`order_products`.`st_code`,
`order_products`.`supplier_stock_code`,
`order_products`.`status`,
`order_products`.`deleted_at`,
`supplier`.`name`,
order_invoice.created_at AS credit_date,
fitters.account_number AS fitter_account_number,
fitters.name AS fitter
FROM `order_products`
LEFT JOIN `orders` ON (`orders`.`id` = `order_products`.`order_id`)
LEFT JOIN `supplier` ON (`order_products`.`supplier_id` = `supplier`.`id`)
LEFT JOIN `fitters` ON (`orders`.`fitter_id` = `fitters`.`id`)
JOIN `order_invoice` ON (`order_invoice`.`order_id` = `orders`.`id`)
WHERE `cancellation_date` IS null
AND `cancellation_date` BETWEEN '2021-01-01 00:00:00' AND '2021-07-28 23:59:59'
AND `order_invoice`.`status` = 'approved'
OR (`order_products`.`deleted_at` BETWEEN '2021-01-01 00:00:00'
OR `order_products`.`deleted_at` IS NULL
AND '2021-07-28 23:59:59')
AND `order_products`.`product_type` = 'product'
ORDER BY `orders`.`id` ASC
解决方案
请尝试将 where 条件更改为 WHERE cancellation_date
IS null AND cancellation_date
BETWEEN '2021-01-01 00:00:00' AND '2021-07-28 23:59:59' AND order_invoice
。status
=“已批准”或(order_products
。为deleted_at
空或order_products
。deleted_at
在“2021-01-01 00:00:00”和“2021-07-28 23:59:59”之间)和order_products
。product_type
='产品'
推荐阅读
- java - Spring @transactional 是否与 MongoDB 一起使用?
- java - 无法将 java.lang.String 类型的值转换为日期(在字段“time_stamp”中找到)
- callback - ESP8266,客户端通过 Ticker 连接
- unity3d - unity:如何在地形上粘贴 arial 照片?
- ignite - 点燃缓存 TreeMap
- c# - XML 中的不同值
- python - 单击 PushButton 时如何打印多个 QLabel?
- python - 更多主题当代
- django - Django crontab,每 12 小时运行一次作业
- reactjs - 使用 Enzyme & Jest 测试关于状态的 IF 语句不起作用