选择与连接表中的许多其他ID有关系的记录 我使用的是SQLite 3数据库 我有两个具有多对多关系的表。因此,我还有一个连接表来保持这种关系。下面是一个类似于我所拥有的东西的表示,带有虚构的数据等
教师表:选择与连接表中的许多其他ID有关系的记录 我使用的是SQLite 3数据库 我有两个具有多对多关系的表。因此,我还有一个连接表来保持这种关系。下面是一个类似于我所拥有的东西的表示,带有虚构的数据等,sql,sqlite,Sql,Sqlite,教师表: +----+------------+ | ID | Name | +----+------------+ | 1 | TeacherOne | | 2 | TeacherTwo | +----+------------| 学生表: +----+------------+ | ID | Name | +----+------------+ | 1 | StudentOne | | 2 | StudentTwo | +----+------------+
+----+------------+
| ID | Name |
+----+------------+
| 1 | TeacherOne |
| 2 | TeacherTwo |
+----+------------|
学生表:
+----+------------+
| ID | Name |
+----+------------+
| 1 | StudentOne |
| 2 | StudentTwo |
+----+------------+
师生(连接表):
我想要的是只选择TeacherID
,它有一条记录将它与StudentID
都链接为1,StudentID
为2。在这种情况下,我只会得到TeacherID
1
我已经尝试了以下SQL语句:
SELECT t_s.*
FROM Teacher_Student AS t_s
WHERE StudentID IN (1, 2)
这将返回所有
StudentID
为1或2的记录。我已经搜索了一个答案,但到目前为止找不到任何对我有帮助的东西,所以只好求助。如果你想选择TeacherID
,它在Teacher\u Student
表中为每个学生都有记录;您可以使用以下查询:
SELECT ts.TeacherID
FROM (
SELECT TeacherID, COUNT(StudentID) AS cnt
FROM teacher_student
GROUP BY TeacherID) ts
JOIN (
SELECT COUNT(*) As sCnt
FROM student) s
ON ts.cnt = s.scnt
您可以使用此查询选择两个特定的学生:
SELECT ts.TeacherID
FROM (
SELECT TeacherID, COUNT(StudentID) AS cnt
FROM teacher_student
WHERE StudentID IN (1,2)
GROUP BY TeacherID) ts
WHERE cnt = 2
这也将删除与学生有两个连接的教师。您希望找到一个教师,该教师在每个学生的师生表中都有一个记录,或者只针对两个特定的学生?只针对学生的特定组合,在本例中为学生1和学生2。这就成功了。谢谢你,我已经为这个挣扎了一段时间了!
SELECT ts.TeacherID
FROM (
SELECT TeacherID, COUNT(StudentID) AS cnt
FROM teacher_student
WHERE StudentID IN (1,2)
GROUP BY TeacherID) ts
WHERE cnt = 2