举个例子,假如我现在有一张表:
CREATE TABLE `course` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增id',
`courseName` VARCHAR (255) NOT NULL COMMENT '课程名称',
`subjectIds` VARCHAR (255) NOT NULL COMMENT '科目ids',
PRIMARY KEY (`id`)
) COMMENT = '课程表';
INSERT INTO `course` (`courseName`, `subjectIds`) VALUES ('语文', '1,2,3');
INSERT INTO `course` (`courseName`, `subjectIds`) VALUES ('数学', '11,12,13');
现在如果我要查询subjectIds
包含2
的课程,如果用IN()
去实现:
SELECT * FROM course WHERE subjectIds LIKE '%2%';
显然查出来的数据是不准确的,不仅查到了subjectIds
包含2
的课程,还查到了subjectIds
包含12
的课程。这个时候再用FIND_IN_SET()试一下:
SELECT * FROM course WHERE FIND_IN_SET('2', subjectIds);
完满的得到了想要的数据!