Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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
Mysql 如何获得表的排列?_Mysql_Sql_Sql Server - Fatal编程技术网

Mysql 如何获得表的排列?

Mysql 如何获得表的排列?,mysql,sql,sql-server,Mysql,Sql,Sql Server,我有一个10列的表。我想得到所有可能的排列。具有3列的表格示例: col1 col2 col3 10 40 3, 20 6 1, 排列表将为: col1 col2 col3 10 40 3, 10 40 1, 10 6 3, 10 6 1, 20 6 1, 20 6 3, 20

我有一个10列的表。我想得到所有可能的排列。具有3列的表格示例:

col1   col2   col3  
10       40     3,   
20        6     1,
排列表将为:

col1   col2   col3 
10      40      3,   
10      40      1,
10      6       3, 
10      6       1, 
20      6       1,
20      6       3,
20      40      3,
20      40      1,
我曾经尝试过交叉连接,但没有成功。 最好的方法是什么


谢谢大家!

您可以使用
交叉连接

select c1.col1, c2.col2, c3.col3
from (select distinct col1 from t) c1 cross join
     (select distinct col2 from t) c2 cross join
     (select distinct col3 from t) c3
order by c1.col1, c2.col2, c3.col3;

是DBFIDLE。

如果某列中有重复项,是否要区分它们?i、 e.在显示的数据中-如果两条记录的col3=3,最终结果是否必须由4条或8条记录组成?是的,我希望结果是唯一的。如果在显示的数据中,两条记录的col3=3,则最终结果将是4条记录。感谢您的快速回复:)如果是,那么就解决您的任务。测试它并标记为解决方案。感谢Gordon Linoff的帮助。我有一个问题-写入之间的区别是什么:从c1交叉连接c2交叉连接c3顺序中选择不同的c1.col1、c2.col2、c3.col3,按c1.col1、c2.col2、c3.col3顺序;你能回答吗?(它们都有相同的输出)。谢谢:)@s.r。这也行得通。事实上,对于示例数据,不需要使用
不同的
。但是,如果您在任何列中都有重复的值,那么您的版本将做更多的工作——生成超出需要的行,然后删除重复项。