SQL重复或重复结果

时间:2014-08-05 23:28:06

标签: sql sql-server

我有一份报告需要复制信息才能生成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

但我不想重复查询。

  

还有其他方法可以达到这个目的吗?

3 个答案:

答案 0 :(得分:2)

对于Jaaz Cole来说,这是一个类似的逻辑,但是你的SQL风格并不重要。简单的逻辑,将表连接到2行集......它会带回每行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