订单表
CREATE TABLE `order` (
`id` bigint(22) NOT NULL AUTO_INCREMENT COMMENT '主键',
`order_no` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=151103 DEFAULT CHARSET=utf8mb4 COMMENT='订单信息表 ';
任务表
CREATE TABLE `order_collection_task_replace` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`order_id` int(11) DEFAULT NULL COMMENT '订单id',
`collection_task_status` int(1) DEFAULT NULL COMMENT '催收任务状态 0 待处理 1 待跟进 2 已完成 3失效',
PRIMARY KEY (`id`) USING BTREE,
KEY `order_id` (`order_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=41997 DEFAULT CHARSET=utf8mb4 COMMENT='订单任务表-新';
没有分配的单子包括order_collection_task_replace不存在的和任务失效的
select
from order_info o
left join order_collection_task_replace t
on o.id = t.order_id and t.collection_task_status != 3
where
t.id is null
在left join下,两者的区别:
on是在生成临时表的时候使用的条件
where则是在生成临时表之后使用的条件,此时已经不管是否使用了left join了,只要条件不为真的行