这可能是一个非常简单的问题,但大多数搜索都与合并行(不合并列)或连接它们有关。
我想在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”附近)
答案 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