我有一份报告需要复制信息才能生成2张(原件和复印件)。
所以我想知道如何考虑以下SQL:
SELECT
emp.name,
emp.lastname,
emp.birthdate,
emp.gender
FROM employee emp
WHERE employeeid = 1
上面的查询只会通过1个结果(1行),我需要重复相同的信息,所以我有2行。
执行此操作的一种方法是使用相同的查询执行UNION ALL
,如:
SELECT
emp.name,
emp.lastname,
emp.birthdate,
emp.gender
FROM employee emp
WHERE employeeid = 1
UNION ALL
SELECT
emp.name,
emp.lastname,
emp.birthdate,
emp.gender
FROM employee emp
WHERE employeeid = 1
但我不想重复查询。
还有其他方法可以达到这个目的吗?
答案 0 :(得分:2)
SELECT
emp.name,
emp.lastname,
emp.birthdate,
emp.gender
FROM employee emp
inner join (select 1 as a union all select 2) a on 1 = 1
WHERE employeeid = 1
老实说,我认为在表格级别而不是像这样的数据级别复制两张纸更容易......无论如何,在实践中对我来说似乎有点奇怪。
答案 1 :(得分:0)
这只适用于SQL Server 2005+(您没有在问题上标记版本),但应该通过持续扫描快速复制结果。
SELECT
emp.name,
emp.lastname,
emp.birthdate,
emp.gender
FROM employee emp
CROSS APPLY ( SELECT 1 AS R UNION ALL SELECT 2 AS R) N
WHERE employeeid = 1
答案 2 :(得分:0)
这里CROSS JOIN,我会添加,因为我发送垃圾邮件给其他人。
SELECT
N.R,
emp.name,
emp.lastname,
emp.birthdate,
emp.gender
FROM employee emp
CROSS JOIN( SELECT 1 AS R UNION ALL SELECT 2 AS R) N
WHERE emp.employeeid = 1