原贴内容:
目前碰到一个查询不会写,表结构是这样的
表A Id Name
1 李三
2 小明
3 林明
表B Id 表AID content grade
1 1 钢琴 二级
2 1 英语 一级
3 2 骑马 一级
4 3 英语 三级
5 3 数学 三级
6 3 钢琴 五级
7 1 骑马 一级
想查询出同时拥有 钢琴二级和英语一级的同学姓名,查询语句如何写呢?
查询结果
Name content grade
李三 钢琴 二级
李三 英语 一级
补充回复:
见一楼
------解决方案--------------------
这句有什么问题?
- SQL code
if(OBJECT_ID('a') is not null) drop table aGOcreate table a (Id int, name varchar(10))insert into a values(1, '李三')insert into a values(2, '小明')insert into a values(3, '林明')if(OBJECT_ID('[b]') is not null) drop table bGOcreate table b (Id int,AID int,content varchar(10), grade varchar(10))insert into b values(1 ,1 ,'钢琴', '二级')insert into b values(2 ,1 ,'英语', '一级')insert into b values(3 ,2 ,'骑马', '一级')insert into b values(4 ,3 ,'英语', '三级')insert into b values(5 ,3 ,'数学', '三级')insert into b values(6 ,3 ,'钢琴', '五级')insert into b values(7 ,1 ,'骑马', '一级')insert into b values(8,2,'英语', '一级')insert into b values(9,2,'钢琴', '二级')goselect t1.name,t2.content,t2.gradefrom a t1 join b t2 on t1.id=t2.aidwhere exists(select 1 from b where content='钢琴' and grade='二级' and aid=t2.aid)and exists(select 1 from b where content='英语' and grade='一级' and aid=t2.aid)and t2.content in ('钢琴','英语')go/*name content grade ---------- ---------- ---------- 李三 钢琴 二级李三 英语 一级小明 英语 一级小明 钢琴 二级(所影响的行数为 4 行)*/
------解决方案--------------------
每次都得等着Google的广告load完成。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
帮顶。