我可以像使用t-sql一样使用select语句来选择并拉出记录列表:
select * from [dbo].[testTable];
但是,如何在结果集的顶部添加“自定义”行呢?
例如,如果结果集是:
John john@email.com Max max@domain.com
我要向结果集中添加一行(不是表中的行),以便它看起来像这样:
Name Email John john@email.com Max max@domain.com
之所以要执行此操作,是因为我要通过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;
在实践中,union all将起作用:
union all
select 'name' as name, 'email' as email union all select name, email from [dbo].[testTable]
但是,我找不到能保证第一个子查询在第二个查询之前完成的文档。SQL Server 中 的基础运算符 确实 具有此行为(或者至少在我上次进行调查时在SQL Server 2008 中 具有此行为)。