【问题标题】:Join of Two Tables where Data Matches in One Column连接一列中数据匹配的两个表
【发布时间】:2016-08-05 01:33:06
【问题描述】:

由于某种原因,我很难掌握连接,而根据我在 SQL 中的知识,这个连接应该非常简单。

无论如何,我有 2 张桌子。我们将它们称为 TableA 和 TableB。 TableA 中的一列是“ID”。 TableB 仅包含“ID”列。我想返回 TableA 中 ID 存在于 TableB 中的所有行。

我知道这应该很容易弄清楚,但我的大脑今天不想工作。

【问题讨论】:

标签: sql sql-server


【解决方案1】:

您可以使用EXISTS

Select  A.*
From    TableA  A
Where   Exists
(
    Select  *
    From    TableB  B
    Where   A.Id = B.Id
)

如果您愿意,也可以使用 JOIN,但根据您的数据,您可能希望将其与 SELECT DISTINCT 结合使用:

Select  Distinct A.*
From    TableA  A
Join    TableB  B   On  A.Id = B.Id

要记住的一点是TableAID 不一定与TableBID 相关。

【讨论】:

  • 感谢您的成功!现在我将如何更新 TableA 中选择的内容?我尝试将“select A.* from”替换为“update”,并在该行之后设置我需要更新的内容,但这似乎不起作用。
  • @chrisdoubleu13 你应该可以把它改成UPDATE A SET . . . FROM TableA A WHERE . . .
  • 知道了。再次感谢!
【解决方案2】:

这应该可以工作

 SELECT B.ID 
 FROM TableA A 
 JOIN TableB B 
 ON (A.ID=B.ID)
 WHERE A.ID=B.ID

【讨论】:

    【解决方案3】:

    您也可以像这样使用 IN 运算符:

    Select  *
    From    TableA 
    Where   ID in
    (
        Select distinct ID
        From    TableB
    )
    

    【讨论】:

      猜你喜欢
      • 2015-08-24
      • 1970-01-01
      • 2011-09-24
      • 2020-07-12
      • 1970-01-01
      • 2012-07-23
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多