我确定之前已经问过这个问题,但我想不出如何在google中对它进行说明,所以我在这里。
我有一个像这样的用户表:
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的/子查询和UNIONs,但我无法弄清楚如何过滤掉UNION语句的虚拟值,这些语句表示UNION的那部分中未选择的列,CTE /子查询可能不能做我想做的事。
答案 0 :(得分:3)
使用交叉连接
SELECT *
FROM MyUser
CROSS JOIN Object
或使用旧式连接(我不推荐)
SELECT *
FROM MyUser, Object
答案 1 :(得分:1)
尝试类似:
SELECT * FROM MyUser, Object