【发布时间】:2021-05-24 04:31:47
【问题描述】:
我有 3 张桌子:
类
| Id | ClassName |
|---|---|
| guid | 1A |
| guid | 2A |
主题
| Id | SubjectName |
|---|---|
| guid | Math |
| guid | Biography |
SubjectOfEachClass
| Id | ClassId | SubjectId | TeacherName |
|---|---|---|---|
| guid | guid | guid | James Bond |
我希望这些表的工作方式是:
- 表 Class 中将有 10 个类。
- 主题表中将有 10 个主题。
- 每个班级将有 10 个科目,对于 10 个班级,将有 100 条记录。
我遇到了一些问题,我查询了 SubjectOfEachClass 表,只有 95 条记录。 我用来查找缺失主题的查询命令是:
SELECT *
FROM Subject s
JOIN (
SELECT *
FROM SubjectOfEachClass
WHERE ClassId = 'guid'
) AS sc ON s.Id = sc.SubjectId
我多次替换了ClassId,直到我发现错过了一些科目的班级。
我认为这种查询方式根本没有效率。如果我有 100 个科目和 100 个班级,我就没有机会找到缺失的科目。
【问题讨论】:
标签: sql sql-server tsql