问题描述
这是执行此操作的安全方法:
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
将起作用:
select 'name' as name, 'email' as email
union all
select name, email from [dbo].[testTable]
但是,我找不到能保证第一个子查询在第二个查询之前完成的文档。sql Server 中 的基础运算符 确实 具有此行为(或者至少在我上次进行调查时在sql Server 2008 中 具有此行为)。
解决方法
我可以像使用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文件中,并且要添加这些“自定义行”作为标题。