Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 r2 数据库中的笛卡尔积_Sql Server 2008 R2_Cartesian Product - Fatal编程技术网

Sql server 2008 r2 数据库中的笛卡尔积

Sql server 2008 r2 数据库中的笛卡尔积,sql-server-2008-r2,cartesian-product,Sql Server 2008 R2,Cartesian Product,我想创建数据库中单个表的列的笛卡尔乘积 我有一个表,有3列,每列有3个值,然后我想在表的列中得到27行笛卡尔积 获得此结果的最佳方法是什么?或者我应该使用任何数据结构来生成输出?创建笛卡尔积很简单 select 1 as one,2 as two,3 as three into #test union all select 4,5,6 union all select 7,8,9 select t1.* from #test t1, #test t2, #test t3 drop

我想创建数据库中单个表的列的笛卡尔乘积

我有一个表,有3列,每列有3个值,然后我想在表的列中得到27行笛卡尔积


获得此结果的最佳方法是什么?或者我应该使用任何数据结构来生成输出?

创建笛卡尔积很简单

select 1 as one,2 as two,3 as three
into #test
union all select 4,5,6
union all select 7,8,9

select t1.*
from
  #test t1,
  #test t2,
  #test t3

drop table #test
这将把
test
(t1的实例)中的每个记录自连接到
test
(t2的实例)中的每个其他记录

如果您想创建一个新表,只需将
selectt1.*
更改为
selectt1.*为myTableName
,他们就会填充该表

编辑:
基于你的问题,我相信我的回答会给你你想要的。不过,您可能希望删除数据。

谢谢您的帮助……但还有一种情况,因为我在运行时在数据库中创建表,而且在表中插入也在运行时完成……因此列数不是固定的。那么,这个问题的解决方案是什么呢?@Neeraj_Yadav如果是这样,为什么不以不同的方式创建表呢?摆脱这种糟糕的数据库设计,做一些更易于维护的事情。发布一些示例输入以及您想要的结果。例如,我有一个csv文件,其中有三列(操作系统、浏览器、处理器),每列中的值可能不同。现在,所有这些工作都是在执行时输入的。导入CSV文件,然后在数据库中创建表,在表中插入值。因此,我必须开发逻辑,以便它可以适用于任何csv文件,这些文件将在将来以“n”个列和行导入,并创建笛卡尔积。必须使用数据库。