有一张表
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`id` bigint(64) NOT NULL AUTO_INCREMENT COMMENT '主键',
`real_name` varchar(64) DEFAULT NULL COMMENT '真名',
`depart_id` varchar(512) DEFAULT '[]' COMMENT '部门id列表',
`add_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工表';
INSERT INTO employee (id, real_name, depart_id, add_time, modify_time) VALUES (1, '刘德华', '[2,3]', '2023-05-25 06:23:18', '2023-09-21 10:39:44');
INSERT INTO employee (id, real_name, depart_id, add_time, modify_time) VALUES (1, '梁朝伟', '[4,8,7]', '2023-05-25 06:23:18', '2023-09-21 10:39:44');
员工可以从属于多部门,
需求是只要员工所属的部门ID和目标部门列表有交集,就出现在结果里,比如目标部门列表为(3, 8, 18, 19, 10, 11),刘德华所属的部门为2,3 所以属于符合搜索结果(因为有3),梁朝伟也是(因为有8)。
并且,这里有个要求,我们只能用一条SQL去实现,也不能用存储过程,如果用 select * from employee where depart_id in (3, 8, 18, 19, 10, 11) ,搜索是得不到任何值的,那么怎么写才对呢?