2016-02-25 71 views
2

我有一個表TAB_1有230行。創建查詢加入2個表1對1沒有共同

CREATE TABLE TAB_1 (audit_id bigint NOT NULL PRIMARY KEY) 

我有另一個表TAB_2,它也有230行。

CREATE TABLE TAB_2 (employee_id bigint NOT NULL PRIMARY KEY, first_name varchar(50) NOT NULL, last_name varchar(50) NOT NULL) 

這兩個表格沒有任何共同之處。

我想寫一個查詢,它將給我這兩個表1中的所有列1(即TAB_1的第1行與TAB_2的第1行,第2行的TAB_1與第2行的TAB_2等等)。該查詢也將有230行。

我該怎麼做?

我嘗試了這些查詢,但他們得到的結果的每一行中tab_1中次,每次行TAB_2:

select a.audit_id, b.employee_id, b.first_name, b.last_name 
from TAB_1 a inner join TAB_2 b on 1 = 1 

select a.audit_id, b.employee_id, b.first_name, b.last_name 
from TAB_1 a cross join TAB_2 b 
+0

加入ROW_NUMBER()。 –

回答

6

你需要一個密鑰才能加入。你可以得到這個使用row_number()

select t1.*, t2.* 
from (select t1.*, row_number() over (order by audit_id) as seqnum 
     from tab_1 t1 
    ) t1 full outer join 
    (select t2.*, row_number() over (order by employee_id) as seqnum 
     from tab_2 t2 
    ) t2 
    on t1.seqnum = t2.seqnum; 

這假定排序是基於第一列。 full outer join將返回所有行,而不管它們是否具有相同的行數。

+0

謝謝。它工作完美。 – srh

1

創建兩個新的查詢,並加入他們的行列:

這些新的查詢將有一個新的列:ROW_NUMBER()

選擇*,ROW_NUMBER()作爲rowTab1從tab_1中

選擇* ROW_NUMBER()從Tab_2

rowTab2

現在創建包含前兩個視圖的第三查詢和加入rowTab1 = rowTab2

1

如果你可以在兩個表上添加額外的列,例如「joinparameter」,並且它從1到230並加入,那麼這兩者都可以工作。

像這樣:

選擇a.audit_id,b.employee_id,b.first_name,從tab_1中b.last_name 一個內連接TAB_2 B關於a.joinparameter = b.joinparameter

或者,如果audit_id和employee_id都從1到230,則可以加入它們。