从两个表sql中获取列

时间:2014-04-07 04:38:14

标签: sql

我需要一些帮助来进行查询以从一个表中获取一列,从另一个表中获取另一列。

Table 1
Id     column1         
===    =======
1      text1
2      text2
3      text3 
Table 2
Id     column2   table1.Id
===    =======   =========
1      text1      2
2      text2      3

我需要结果

table1.Id    table1.column1   table2.column2
=========    ==============   ==============
   1           text1             null
   2           text2             text2
   3           text3             text3

我需要table1中的第1列和表2中基于table1的第2列。我需要获取table1中记录的column2值。任何人都可以帮我吗?。

我试过了

SELECT table1.column1 , table2.column2
FROM table1
INNER JOIN table2
ON table1.Id = table2.table1.Id
ORDER BY table.Id;

我需要来自table1的所有记录,但是通过上面的查询,我获得了更多的记录。

由于某种原因,我获得的记录超出预期,我在table1中有10条记录,我应该只得到10及其对应的第2列值,但我得到的记录更多。我希望记录表1包含相同的记录

4 个答案:

答案 0 :(得分:0)

请尝试使用以下代码段

SELECT table1.column1 , table2.column2
FROM table1
LEFT JOIN table2
ON table1.Id = table2.table1.Id 
--ON table1.Id = table2.[table1.Id] -- Also try with this
ORDER BY table1.Id;

答案 1 :(得分:0)

您应该尝试LEFT OUTER JOIN

答案 2 :(得分:0)

试试这个:

 SELECT table1.column1 , table2.column2
 FROM table1
 LEFT JOIN table2
 ON table1.Id = table2.table1.Id
 ORDER BY table1.Id ASC;

答案 3 :(得分:0)

抱歉我的英文不好,如果您想要与主要密钥和foriegn密钥匹配的记录,请使用INNER JOIN这样的查询

SELECT t1.column1, t2.column2
FROM tab1 t1 INNER JOIN tab2 t2
ON (t1.id = t2.tab1Id) ORDER BY t1.id

但是如果你想要所有与primary和foriegn密钥匹配或匹配不匹配的记录,你应该使用LEFT JOIN这样的查询

SELECT t1.id, t1.column1, t2.column2
FROM tab1 t1 LEFT JOIN tab2 t2
ON (t1.id = t2.tab1Id) ORDER BY t1.id