实现这样的多对多查询SQL

来源:百度知道 编辑:UC知道 时间:2024/06/06 02:18:41
表 table1

name subject
1 a
1 b
2 a
2 b
2 c
2 d
3 a
4 a
4 e
… …

比如上表是学生学号对应的选修课程。
现在我想查询出
同时至少选修a b c 课程的学生的学号

该如何呢?

办法可有很多种,对于这类的一般采用中间生成临时表的办法.如果不想生成临时表可以用以下:
select name from table1 where subject="a" and subject in(
select * from table1 where subject="b" and subject in(
select * from table1 where subject="c"))

看明白了,查询嵌套的方式,正好一般SQL是允许四层以下的嵌套查询.多了就不行了!

另外,表连接中还有一种方式是自身连接.可以自身连接的办法也是可以的!办法有很多种的,只看你对关系数据库的理解.

我也想知道.