我有三个表:
表格1:
ID Name
1 Item1
2 Item2
3 Item3
表二:
ID Name Type
1 Logistics One
2 Human Resource Two
3 Finance Three
表 3(多对多表):
ID Table1ID Table2ID
1 1 1
2 1 2
3 2 1
4 3 1
5 3 2
5 3 3
我想从 table1 中选择存在于多对多表中的所有项目,只从 table2 中输入一个而不是第二个。第三类不关心。因此,表 1 中的所有项目在表 3 中都有记录,只有类型一而不是类型二。
您可以使用
NOT EXISTS
to eliminate rows linked to unnecessary types (like @a_horse already suggested )。但是由于多行可以匹配任何行,因此
table1
也可以EXISTS
用来限定链接到所需类型的行:通过演示像 a_horse 这样的连接,您将乘以行并被迫添加聚合或
DISTINCT
步骤以再次获取不同的行。不。此外,您可以两次使用相同的子查询,使查询更易于理解和维护。
顺便说一句,我认为这是relational-division的特例。有关的:
听起来你想要以下内容。加入表格并进行过滤。按列分组应包括 table1 中的所有列