Car*_*ven 5 sql t-sql sql-server
我可以使用t-sql这样的select语句选择并提取记录列表:
select * from [dbo].[testTable];
Run Code Online (Sandbox Code Playgroud)
但是,如何在结果集的顶部添加"自定义"行?
例如,如果结果集是:
John john@email.com
Max max@domain.com
Run Code Online (Sandbox Code Playgroud)
我想添加一个不是从表中的行到结果集,以便它看起来像这样:
Name Email
John john@email.com
Max max@domain.com
Run Code Online (Sandbox Code Playgroud)
我想这样做的原因是因为我要通过sqlcmd将它导出到csv文件中,我想在那些"自定义行"中添加标题.
这是安全的方法:
select name, email
from ((select 'name' as name, 'email' as email, 1 as which
) union all
(select name, email, 2 as which from [dbo].[testTable]
)
) t
order by which;
Run Code Online (Sandbox Code Playgroud)
在实践中,union all将工作:
select 'name' as name, 'email' as email
union all
select name, email from [dbo].[testTable]
Run Code Online (Sandbox Code Playgroud)
但是,我找不到保证第一个子查询在第二个子查询之前完成的文档.SQL Server 中的底层运算符确实具有此行为(或者至少在我上次调查它时在SQL Server 2008中执行过此操作).
SELECT name, email FROM (
SELECT 'Name' AS Name, 'Email' AS Email, 1 AS o
UNION ALL
SELECT name, email, 2 AS o FROM testTable
) t
ORDER BY o, name
Run Code Online (Sandbox Code Playgroud)
添加 o 列以对 UNION 的结果集进行排序,以便确保第一个结果集出现在顶部。
| 归档时间: |
|
| 查看次数: |
14691 次 |
| 最近记录: |