加入两个具有相同ID和合并ID列的表

时间:2017-06-05 15:51:50

标签: mysql

这可能是一个非常简单的问题,但大多数搜索都与合并行(不合并列)或连接它们有关。

我想在ID列上加入两个表,但我只希望它返回一个ID列。

示例:

表1:

ID|Data1|Data2

表2:

ID|Data3|Data4

我希望它返回:

ID|Data1|Data2|Data3|Data4

编辑:

我意识到我可以指定每一列,但实际上我已经接近了50列,我宁愿不必指定每一列。有没有办法在不指定每个列从查询中移除的情况下执行此操作?

我相信自然联接是我需要的,但看到我得到的错误:

SELECT *
FROM allqachecklists t1
WHERE t1.IsIncorrect=1
NATURAL JOIN (SELECT QAID, PMC, SiteName, Submitter, QAer FROM qabin.allqas) t2

在分析过程中发现了1个错误。

无法识别的关键字。 (位于第59位的“NATURAL”附近)

3 个答案:

答案 0 :(得分:1)

这是你需要的

SELECT table1.ID,table1.Data1,table1.Data2,table2.Data3,table2.Data4
FROM table1
JOIN table2 ON table1.id=table2.id

答案 1 :(得分:1)

自然连接允许您从两个表中选择*并加入键。然后在结果集中将这两列返回为ONE;如果两个表中没有其他列的名称相同。

SELECT * 
FROM Table1 A 
NATURAL JOIN Table2 B 

可以找到一个例子:http://rextester.com/FNT36037

mySQL Docs州: ...

使用USING进行自然连接和连接,包括外连接变体,根据SQL:2003标准进行处理:

不会出现NATURAL连接的冗余列。 ...

您的编辑问题:我们可以将您的SQL修改为以下内容。

SELECT *
FROM allqachecklists t1
NATURAL JOIN (SELECT QAID, PMC, SiteName, Submitter, QAer FROM qabin.allqas) t2
WHERE t1.IsIncorrect=1
LIMIT 10

然后加入where子句;虽然小心使用外连接,因为表中没有所有记录的限制需要放在连接上,或者外连接的行为就像是内部连接。

答案 2 :(得分:0)

听起来像一个非常直接的内部联接:

select A.ID, data1, data2, data3, data4 from A 
inner join B ON A.ID = B.ID