2017-04-10 16 views
0

我想連接兩個表格,這意味着如果我有兩個表格A,B我想要: A的第1行僅連接B的第1行第 行的第2行一個只能加入行2 B 等SQL(簡單地)逐行連接兩個表格

所以如果我有

table A 
name 

John 
George 
Nick 
Legolas 



table B 
surname 

Smith 
Rogueman 
Born 
Yohazol 


the result would be: 

table C 
name surname 


John Smith 
George Rogueman 
Nick Born 
Legolas Yohazol 

在此先感謝

+0

某人正在外包他們的功課。據我所知,我們正確的問題,而不是回答你的作業 – maSTAShuFu

+0

要做到這一點,你需要通過使用id列或類似的行匹配行。將ID列添加到表中,然後使用INNER JOIN –

+0

@Haloha加入它們,您沒有任何列來關聯這些表? –

回答

0

像這樣的..

SELECT * 
FROM (
    SELECT row_number() OVER(), * 
    FROM tbl1 
    -- ORDER BY id (or whatever you're ordering by) 
) AS t1 
INNER JOIN (
    SELECT row_number() OVER(), * 
    FROM tbl2 
    -- ORDER BY id (or whatever you're ordering by) 
) AS t2 
    USING (row_number); 
+0

以滿意的方式工作,謝謝! – Haloha

+0

@Haloha http://stackoverflow.com/help/someone-answers –

0

如果您沒有id或任何與列匹配的列,則可以使用ROW_NUMBER作爲ID。

WITH cteA(rn, name) AS(
    SELECT 
     ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rn, 
     name 
    FROM tableA 
), 
cteB(rn, name) AS(
    SELECT 
     ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rn, 
     name 
    FROM tableB 
) 
SELECT 
    a.name AS name, 
    b.name AS surname 
FROM cteA a 
INNER JOIN cteB b 
    ON b.rn = a.rn 
+0

非常感謝,謹記 – Haloha

+0

ll不需要'ORDER BY(SELECT NULL)'。你可以在Postgres中有'ROW_NUMBER()OVER()',如果你不關心這個命令 –