【问题标题】:Why join another table that is not in the SELECT statement?为什么要加入另一个不在 SELECT 语句中的表?
【发布时间】: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 * 并注释掉 WHEREJOINs 以直观地查看发生了什么。

标签: sql sql-server select join


【解决方案1】:

假设您有两张表,Person 和 Company(此人当前工作的公司)。您想选择在同一家公司工作的所有人(比如说 Google)。如果不将 Person 加入 Company,您将无法编写该条件,因为您的条件是指 Company 表中的列。

【讨论】:

    猜你喜欢
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2016-07-20
    • 2018-12-18
    相关资源
    最近更新 更多