如何在同一查询中多次引用单个表?

时间:2010-02-24 13:14:18

标签: sql sql-server tsql

有时我需要将同一个表视为两个单独的表。解决方案是什么?

4 个答案:

答案 0 :(得分:9)

您可以参考,只需确保使用表别名

select a.EmployeeName,b.EmployeeName as Manager
from Employees A
join Employees B on a.Mgr_id=B.Id

答案 1 :(得分:6)

在SQL中使用类似变量名的别名:

select
    A.Id,
    A.Name,
    B.Id as SpouseId,
    B.Name as SpouseName
from
    People A
    join People B on A.Spouse = B.id

答案 2 :(得分:2)

使用别名:

SELECT t1.col1, t2.col3
FROM tbl t1
INNER JOIN tbl t2
    ON t1.col1 = t2.col2

答案 3 :(得分:2)

Alias是最明显的解决方案

SELECT * FROM x1 AS x,y1 AS y

但是,如果表是查询的结果,则公用表表达式非常有用

;WITH ctx AS 
( select * from z)
SELECT y.* FROM ctx AS c1,ctx AS c2

第三个解决方案 - 适用于您的查询持续很长时间 - 是临时表:

SELECT * 
INTO #monkey
FROM chimpanzee

SELECT * FROM #monkey m1,#monkey m2

DROP TABLE #MONKEY

请注意,公用表表达式仅适用于一个查询(查询后面的查询),临时表可用于整个批处理。