2 つのテーブルにタスクが割り当てられていないリストをクエリする

订单表
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

左結合では、両者の違いは次のとおりです:
on は一時テーブルの生成時に使用される条件
、 は一時テーブルの生成後に使用される条件 この時点では、左結合が使用されるかどうかは関係ありません。条件が true でない限り OK

おすすめ

転載: blog.csdn.net/itlijinping_zhang/article/details/111598114