我的目标是将2个表中的所有行组合在一起。我能想到的最简单的例子是:
表1
Letter
A
B
表2
Number
0
1
合并表
Letter Number
A 0
B 0
A 1
B 1
我提出了这个SQL语句:
select * from
(
select * From (
select 'A' as 'Letter'
UNION
select 'B' as 'Letter'
) as Letter
) as Letter,
(
select * from (
select 0 as 'Number'
UNION
select 1 as 'Number'
) as Number
) as Number
这有效,但我不喜欢它。
有谁知道更清洁的方式吗?我确信答案已经存在,但我不知道如何搜索它。谢谢大家
答案 0 :(得分:7)
试试这个
select * from table1 join table2 on 1=1
这是笛卡儿的产品,如果这是你想要的,那么
你只需要指定一些始终为真的连接条件。
试试这个。
SELECT * FROM
(
SELECT 'A' AS ch
UNION ALL
SELECT 'B'
)
T1
JOIN
(
SELECT 0 AS dg
UNION ALL
SELECT 1
) T2
ON 1 = 1
在SQL Server中,您也可以执行此操作(如果您发现它更简洁/清晰)。
SELECT *
FROM
(
VALUES
('A'),
('B')
)
AS ch1(ch)
JOIN
(
SELECT *
FROM
(
VALUES
(0),
(1)
)
AS dg1(dg)
) TBL
ON 1 = 1
答案 1 :(得分:7)
CROSS JOIN
...
SELECT *
FROM Table1
CROSS JOIN Table2
结果:
Letter Number
------------------------- -----------
A 0
B 0
A 1
B 1
(4 row(s) affected)