SQL加入2个表以获取所有列

时间:2017-06-01 21:20:51

标签: sql

TableA包含

cola1    | cola2   | cola3 | colAB
-----------------------------------
 a1          a2        a3      1
 a11         a22       a33     1

TableB包含

 colb1    | colb2   | colb3 | colAB
 -----------------------------------
 b1          b2        b3       1
 b11         b22       b33      1

我想要这样的结果:

cola1    | cola2   | cola3 | colb1 | colb2 | colb3 | colAB
----------------------------------------------------------
  a1         a2        a3     b1      b2      b3       1
  a11        a22       a33    b11     b22     b33      1

如何获得这个?

由于

3 个答案:

答案 0 :(得分:0)

SELECT [fields you want]
FROM TableA
JOIN TableB ON TableA.colAB=TableB.colAB;

请阅读SQL JOIN

答案 1 :(得分:0)

select cola1, cola2, cola3, colb1, colb2, colb3, a.colAB
from TableA a 
inner join TableB b on a.colAB = b.colAB

编辑:这是不正确的:根据另一个答案的评论,这也将导致四行。

答案 2 :(得分:0)

你的问题是,你需要了解这两个表是如何相关的,因为乍一看它们不是。这是业务需求问题,而不是语法问题。在查询数据之前,您需要了解数据的含义。看起来好像关系是你需要从两个表中的col1中删除第一个字符并加入它。根据提供的非常有限的数据集,判断coudl是一种肤浅的猜测。你需要了解这些领域的污点以及它们应该如何相互关联。这意味着您需要向业务部门询问我们。

如果我的猜测是正确的,那么您需要修复数据模型。删除字符以执行连接是无效的。如果数据应该是相关的,那么您必须在其中一个表中包含外键字段。如果这些是(或最终将是)大表,则尤其如此。

如果您确实需要去除前导字符,则可以通过创建计算字段来转换数据。在这种情况下,您需要非常确定,如果存在包含多个要删除的单个数字字符的字符,则始终存在前导字符以及您需要执行的操作。这可能变得非常复杂,但每次查询时创建一个新字段以加入时,最好做一次。此时修复数据模型不是可选的,除非这是一次永远不会再发生的一次性数据转换。