加入两个sql结果

时间:2012-10-17 07:25:12

标签: sql

我的第一个结果看起来像这样

ID       Name
----------------------------------
1        George
2        Peter
3        San

我的其他结果看起来像这样

AnotherID     ID     Note
-----------------------------------
1             1      georgesnote1
2             1      georgesnote2
3             3      sansnote1
4             1      georgesnote3

我希望他们看起来如何:

ID       Name        Note
----------------------------------
1        George      georgesnote1
1        George      georgesnote2
1        George      georgesnote3
2        Peter       NULL
3        San         sansnote1

我的SQL知识几乎限制了我实现这一目标。我想我需要像UNION ALL这样的东西。 INNER JOIN或LEFT OUTER JOIN不起作用。我的实际查询大约是21行,所以这不是一个初学者的问题。我需要的是基于相同的ID加入两个结果。请有人指导我。

8 个答案:

答案 0 :(得分:2)

SELECT 
  N1.ID, N1.Name, N2.Note 
FROM 
  Names N1
    LEFT JOIN Notes N2 ON N1.ID = N2.ID
ORDER BY
  N1.ID

答案 1 :(得分:2)

您必须使用left join

select r1.id, r1.Name, r2.Note 
from result1 r1
left join result2 r2 on r2.id = r1.id
order by 1

但如果你的结果来自其他quires,请尝试添加以下这些quires:

select r1.id, r1.Name, r2.Note 
from (select id,name from tab1) r1
left join (select id,note from tab2) r2 on r2.id = r1.id
order by 1

Here您可以找到有关left join

的更多信息

答案 2 :(得分:2)

你需要一个LEFT JOIN。

结帐http://www.w3schools.com/sql/sql_join_left.asp

宣称第一个表格为第一个,第二个表格称为第二个。 第一个表格中的 id 列将与第二个表格中的 id 列相匹配。

SELECT first.id, first.name, second.note
FROM first
LEFT JOIN second
ON first.id = second.id
ORDER BY first.id

答案 3 :(得分:2)

select n.ID, n.Name, t.note 
  from names n 
  left join notes t
  on n.id = t.id

答案 4 :(得分:1)

Select sur.ID, sur.NAME, not.NOTE 
FROM SURNAME sur
LEFT JOIN NOTES not
ON sur.ID = not.ID

答案 5 :(得分:1)

select
    T1.ID,
    T1.Name,
    T2.Note
from Table1 as T1.ID
    left outer Table2 as T2 on T2.ID = T1.ID

答案 6 :(得分:1)

LEFT JOIN就是你需要的,因为你想要从table1中选择所有记录,只要它们与table2匹配或不匹配

SELECT  a.ID, a.Name, b.Note
FROM    table1 a
        LEFT JOIN table2 b
            ON a.ID = b.ID

答案 7 :(得分:1)

select table1.id,table1.name,table2.note from table1 left  join table2  on table1.id=table2.id