让我们坐下来我有一个带有行的表'A':
A
B
C
D
是否有一种简单的方法可以进行创建
的交叉连接A 1
A 2
A 3
A 4
...
D 1
D 2
D 3
D 4
没有创建第二个表?
类似的东西:
SELECT *
FROM A
CROSS JOIN (1,2,3,4)
答案 0 :(得分:1)
类似的东西应该有效,我想
select * from A cross join (select 1 union all select 2 union all select 3 union all select 4) as tmp
你将创建第二个表,但你不会坚持它。
答案 1 :(得分:1)
以下适用于任何大小的表(尽管我只测试了6行)。它使用SQL Server 2005及更高版本中提供的排名功能,但这个想法应该适用于任何RDBMS。
SELECT ta.SomeColumn, cj.Ranking
from TableA ta
cross join (select row_number() over (order by SomeColumn) Ranking from TableA) cj
order by ta.SomeColumn, cj.Ranking
答案 2 :(得分:0)
您应该能够通过
实现这一目标select * from A cross join
(select 1
union all
select 2
union all
select 3
union all
select 4)