0
我有三個表I.E.表1,表2,表3。我可以在prod_id列的基礎上加入table1和table2(這是常見的,並將table2與外鍵概念相關聯)。如何在第三個表中沒有公共列的情況下連接三個表?
現在我想連接table3和table1和table2的結果,其中table3中的所有列都是相同的。我嘗試了row_number(),但它沒有給出正確的結果。
如何在SQL Server 2016中執行此操作?
我有三個表I.E.表1,表2,表3。我可以在prod_id列的基礎上加入table1和table2(這是常見的,並將table2與外鍵概念相關聯)。如何在第三個表中沒有公共列的情況下連接三個表?
現在我想連接table3和table1和table2的結果,其中table3中的所有列都是相同的。我嘗試了row_number(),但它沒有給出正確的結果。
如何在SQL Server 2016中執行此操作?
只需創建一個臨時表或進行子查詢,因爲表3通過某種可計算的結果涉及到表1和表2:
SELECT
t1.col1 + t2.col2 as t12_result,
t1.col2,
t2.col2,
INTO #temptable
FROM table1 as t1
left join table2 as t2 on t1.prod_id = t2.prod_id;
SELECT t3.*, temp.*
FROM table3 t3
Left join #templtable temp on temp.t12_result = t3.col_id;
但是如果你只想加入就行號(這意味着有不是關係鍵,這些表恰好具有相同的長度,並且它們並排排列),只需在每個鍵上創建一個row_number_id鍵並加入即可。 (在這裏你需要認識到SQL內部保存的行號與你所看到的行號不一樣)。 你可以在每個表上創建一個人工索引行並將它們連接到這些表上,但這會非常棘手,正如所說的SQL內部不關心行的順序並重新組合它們一樣,只要你沒有一個集羣式分層主鍵集,它確定了順序。
你可以提供一些示例數據和表結構嗎?隨着當前和預期的產出? – tarheel