在C#中,您可以拥有以下代码:
string[][] Stuff = new string[] { new string[] {"1", "2", "3"}, new string[] {"4", "5", "6"} };
string[] OneList = Stuff.SelectMany(x => x).ToArray();
所以我想知道,在sql中怎么能做到这一点?
表中(表1 |表2):
|1|4|
|2|5|
|3|6|
最终结果(同列表1和表2的结果):
|1|
|2|
|3|
|4 |
|5 |
|6|
那么,这可以在不使用临时表的情况下完成吗?
在一个简单的sql语句中可以做到这一点吗?
由于SQL Server不支持"嵌套"结果集,因此"扁平化"它们也没有意义。
您的C#示例采用两个列表,将它们包装起来,然后将它们展平。这实际上可以重写为一个简单的串联:
string[] OneList = Stuff[0].Concat(Stuff[1]).ToArray();
SQL Server支持此操作--串联结果集---。您可以使用UNION ALL
:
SELECT column1 FROM table1
UNION ALL
SELECT column1 FROM table2
ORDER BY column1
注:
UNION ALL
保留重复项,UNION
过滤它们。如果
column1
在table2
中有不同的名称,则ORDER BY
子句必须使用第一个SELECT
子句中的列名。