表1、programmer(程序员表)表2、language(编程语言表)表3、programmer_language_map(映射表,即某个程序员会哪些语言)查询出除了1,2,3以外不会其他编程语言的程序员集合,也就是符合条件的程序员可以只会编程语言1,可以会1/2/3三个语言,也可以什么都不会,但是不能会编程语言4(即超出1/2/3范围)。这种需求能用一条SQL查询语句实现吗?CREATETABLE`programmer`(`id`int(11)NOTNULLAUTO_INCREMENT,PRIMARYKEY(`id`))INSERTINTO`programmer`VALUES('1');INSERTINTO`programmer`VALUES('2');INSERTINTO`programmer`VALUES('3');INSERTINTO`programmer`VALUES('4');INSERTINTO`programmer`VALUES('5');CREATETABLE`language`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(255)DEFAULTNULL,PRIMARYKEY(`id`))INSERTINTO`language`VALUES('1','Java');INSERTINTO`language`VALUES('2','C#');INSERTINTO`language`VALUES('3','C++');INSERTINTO`language`VALUES('4','JavaScript');INSERTINTO`language`VALUES('5','Python');CREATETABLE`programmer_language_map`(`p_id`int(11)NOTNULL,`l_id`int(11)NOTNULL,PRIMARYKEY(`p_id`,`l_id`))INSERTINTO`programmer_language_map`VALUES('1','3');INSERTINTO`programmer_language_map`VALUES('1','4');INSERTINTO`programmer_language_map`VALUES('2','3');表结构和初始的数据贴上。需要的查询结果是programmer中的2/3/4/5。
2 回答

猛跑小猪
TA贡献1858条经验 获得超8个赞
selectidfromprogrammerwhereidnotin(selectp_idfromprogrammer_language_mapwherel_idnotin(1,2,3))
添加回答
举报
0/150
提交
取消