【问题标题】:TSQL Joining three tables where none have a common columnTSQL连接三个没有公共列的表
【发布时间】:2014-09-30 22:38:04
【问题描述】:

这可能很简单,因为我是个新手。

我有两个从 Excel 导入的表格,我几乎需要根据电子表格中的电子邮件地址更新现有的电子邮件地址表格。

我唯一的问题是我无法加入一个公共列,因为没有一个表共享一个列。

所以我想知道,在 Join 中,我是否可以放一些类似

FROM table a
INNER JOIN table b ON b.column 'name' = a.column 'nameplus' `

任何帮助将不胜感激!

【问题讨论】:

  • 显示两个表中的一些示例数据。
  • 您的代码不符合SQL syntax
  • 另外,您的标题与您对涉及多少表的解释不匹配。那么,是两个还是三个?

标签: sql-server tsql join


【解决方案1】:

没有匹配谓词的连接可以有效地实现为cross join:即表 A 中的每一行都与表 B 中的每一行匹配。

如果您指定 INNER JOIN,那么您必须有一个 ON 术语,它要么匹配,要么不匹配:在您的示例中,您可能有一个技术匹配(即b.column 确实如此 - 也许完全巧合的是 - 匹配 a.column) 这没有任何商业意义。

所以你要么有

  • CROSS JOIN:无法链接表格,但结果是所有可能的行组合

或者:

  • inner join,您必须在其中指定行的组合方式(或 left/right outer join,如果您想包括任一侧的所有行,无论匹配性如何)

【讨论】:

  • 天哪...我不敢相信我没有想到交叉连接。这就是我所需要的。谢谢!一旦我的“我是菜鸟,所以我必须等待选择答案”等待时间到了,我就会选择你的答案。非常感谢!
  • @PapaNer - 我希望你明白CROSS JOIN 明确创建Cartesian product
猜你喜欢
  • 2013-11-04
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2019-09-25
  • 1970-01-01
相关资源
最近更新 更多