2015-10-09 87 views
0

我有两个表是这样的:插入行,通过比较两个表

ID  Name  Value 
---------------------- 
1  Book1 A 
2  Book2 B 
3  Book3 C 

Name 
---------------------- 
Book4 
Book5 

我想写查询在第一个表中插入行,使其成为:

ID  Name  Value 
---------------------- 
1  Book1 A 
2  Book2 B 
3  Book3 C 
1  Book4 NULL 
2  Book4 NULL 
3  Book4 NULL 
1  Book5 NULL 
2  Book5 NULL 
3  Book5 NULL 

我可以不能让它与这个查询一起工作:

SELECT a.ID, 
     b.Name, 
     a.Value 
FROM table1 a 
     LEFT JOIN (SELECT Name FROM table2) b ON a.Name = b.Name 

我也试过CROSS JOIN,但还是不太明白。任何帮助将不胜感激。

+0

您想要插入行还是创建该查询? –

+0

只需插入行 – notlkk

回答

2

对于这种情况下,我将命名TableA您的第一个表和TableB只有名称。但下次尝试提供一些有意义的名字。

INSERT INTO TableA 
SELECT A.ID, B.Name, Null 
FROM 
    (
    SELECT DISTINCT ID 
    FROM TableA 
    ) A, TableB B 
+0

Carlos,谢谢你的回复。不幸的是,您的查询将返回来自TableA的ID,来自表B的名称和值为NULL的行,但未选择Book1,Book2,Book3及其各自的值。 – notlkk

+0

其实,我错了。你的查询应该可以工作上投票。 – notlkk