【发布时间】:2017-01-30 21:48:18
【问题描述】:
WHERE 子句中有一个过滤器。它的目的是什么?我试图理解这背后的逻辑。如果表 B 甚至不在 SELECT 语句中,我什至不需要加入表 B。
例子:
Select
A.col1,
A.col2,
A.col3
From table A
Inner join Table B
On A.A = B.B
Where B.col = value
【问题讨论】:
-
很简单,就是要确保你只从 A 中提取在 B 中有相应行的行。想想一组学生,你想知道所有参加特定考试的学生.您不关心他们的得分,只关心他们参加了测试,因此输出不需要包含测试表中的任何列。
-
您正在通过
INNER JOIN来过滤记录。如果某些内容不满足JOIN条件,则将其从结果中过滤掉。此外,您只需要在TableB中查找与col = value匹配的内容。如果这两个条件都失败,则从结果中过滤掉记录。结果记录仅从A端显示它们的值。尝试将SELECT替换为SELECT *并注释掉WHERE和JOINs 以直观地查看发生了什么。
标签: sql sql-server select join