2013-12-20 60 views
0

我確定之前已經詢問過這個問題,但我無法想象如何在谷歌中使用它,所以我在這裏。將兩個完全不同的結果集合爲一個

我有用戶的表像這樣:

create table MyUser 
(
    Id int 
) 

insert into MyUser(Id) 
select 1 union 
select 2 union 
select 3 union 
select 4 union 
select 5 

和對象的表像這樣:

create table Object 
(
    Id int 
) 

insert into Object(Id) 
select 1 union 
select 2 union 
select 3 

我想作爲一個結果集是這樣的(第一列MYUSER。 Id,第二個是Object.Id):

1, 1 
1, 2 
1, 3 
2, 1 
... 

基本上,我希望這兩個表的每個組合都有一行。這question是類似的,但我不能依靠一個表中的值小於或大於值。所以,基本上,我相信我想要的可以被描述爲兩張表之間沒有關係的笛卡爾積。

我該怎麼做?我一直在玩CTE的/子查詢和UNION,但我無法弄清楚如何過濾掉UNION語句的虛擬值,這些UNION語句代表在UNION和CTE /子查詢中沒有被選中的列不能做我想要的東西。

回答

3

使用交叉連接

SELECT * 
FROM MyUser 
CROSS JOIN Object 

或使用舊式連接(我不推薦)

SELECT * 
FROM MyUser, Object 
+0

完美!我有'CROSS APPLY'卡在我的頭上,顯然是不正確的。我從來沒有遇到過這種情況,所以我想不出正確的語法。謝謝。 –

1

試着這麼做:

SELECT * FROM MyUser, Object 
相關問題