表1、programmer (程序员表)
表2、language (编程语言表)
表3、programmer_language_map (映射表,即某个程序员会哪些语言)
查询出除了1,2,3以外不会其他编程语言的程序员集合,也就是符合条件的程序员可以只会编程语言1,可以会1/2/3三个语言,也可以什么都不会,但是不能会编程语言4(即超出1/2/3范围)。
这种需求能用一条SQL查询语句实现吗?
CREATE TABLE programmer
(
id
int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id
)
)
INSERT INTO programmer
VALUES ('1');
INSERT INTO programmer
VALUES ('2');
INSERT INTO programmer
VALUES ('3');
INSERT INTO programmer
VALUES ('4');
INSERT INTO programmer
VALUES ('5');
CREATE TABLE language
(
id
int(11) NOT NULL AUTO_INCREMENT,
name
varchar(255) DEFAULT NULL,
PRIMARY KEY (id
)
)
INSERT INTO language
VALUES ('1', 'Java');
INSERT INTO language
VALUES ('2', 'C#');
INSERT INTO language
VALUES ('3', 'C++');
INSERT INTO language
VALUES ('4', 'JavaScript');
INSERT INTO language
VALUES ('5', 'Python');
CREATE TABLE programmer_language_map
(
p_id
int(11) NOT NULL,
l_id
int(11) NOT NULL,
PRIMARY KEY (p_id
,l_id
)
)
INSERT INTO programmer_language_map
VALUES ('1', '3');
INSERT INTO programmer_language_map
VALUES ('1', '4');
INSERT INTO programmer_language_map
VALUES ('2', '3');
表结构和初始的数据贴上。
需要的查询结果是programmer中的2/3/4/5。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。