MANY-MANY RELATIONSHIP中的SQL查询恰好是具有匹配条件的一条记录

时间:2014-05-24 18:25:25

标签: sql many-to-many

我有很多喜欢和很多关系 为:

TABLE 1 : select * from student;

| id   | name   |
|    1 | sone   |
|    2 | stwo   |
|    3 | sthree |
|    4 | sfour  |
|    6 | ssix   |


TABLE 2 : select * from course;


|  id  | name |
|  100 | CSE  |
|  101 | ECE  |
|  102 | ITI  |

RELATION_SHIP TABLE : select * from student_course
| id   | stu_id | cou_id |
|    1 |      1 |    101 |
|    2 |      2 |    102 |
|    3 |      2 |    100 |
|    4 |      3 |    100 |
|    5 |      3 |    101 |
|    6 |      1 |    101 |
|    1 |      6 |    101 |

我需要写一个查询来选择一个只有一门课程'CSE'的学生,而且他不应该有任何其他课程。

提前致谢

1 个答案:

答案 0 :(得分:0)

使用查询

SELECT 
  sc.`stu_id`,
  COUNT(sc.`cou_id`) AS cnt 
FROM
  student_course sc 
GROUP BY sc.`stu_id` 
HAVING cnt = 1 
  AND GROUP_CONCAT(cou_id) LIKE 
  (SELECT 
    id 
  FROM
    course 
  WHERE NAME = 'CSE')