試試這個方法:
SELECT row_number() over (order by momId, dadId) as ID,
momId,
dadId
into newTable
FROM (
SELECT distinct momId, dadId
FROM (
SELECT momId, dadId
FROM actualTable
UNION
SELECT momOfMomId, dadOfDadId
FROM actualTable
) tb
) tb2
哪裏newTable
是要創建新表的名稱。
看到它在這裏工作:http://sqlfiddle.com/#!6/31859/1
編輯答案爲OP在他真正需要的註釋說明。 另外,我已經創建了新的ID,所以如果它不正確,請解釋如何處理新表的ID。
編輯
瞭解OP的問題,有一些更多的思考就可以了其實我想通了,這是方式simplier比我思前想後。所以,這裏是新的解決方案:
SELECT id, momId, dadId INTO newTable2
FROM (SELECT id, momId, dadId
FROM actualTable
UNION
SELECT momId, momOfMomId, dadOfDadId
FROM actualTable
) a;
此選擇將創建newTable2
,如果你並不需要一個新表剛剛從上面的查詢中刪除INTO newTable2
條款。要看到在新表中的數據只是做:
SELECT * FROM newTable2
看到它在這裏工作:http://sqlfiddle.com/#!6/b585b/1
你的意思是,你基本上是要與剛剛從原表中某些列的新表?使用這些列創建新視圖就足夠了。 –
是的,我需要一個新表格,其中包含原始表格中的一些列。 – Afi
哦,等等,所以你的意思是每個(momId,momOfMomId,dadOfMomId)等都會在新表中創建一個新的元組?哇。這個問題並不明顯。請修改。 –