Как я могу ссылаться на одну таблицу несколько раз в одном запросе? - PullRequest
5 голосов
/ 24 февраля 2010

Иногда мне нужно рассматривать одну и ту же таблицу как две отдельные таблицы. Какое решение?

Ответы [ 4 ]

9 голосов
/ 24 февраля 2010

Можно ссылаться, просто обязательно используйте псевдоним таблицы

select a.EmployeeName,b.EmployeeName as Manager
from Employees A
join Employees B on a.Mgr_id=B.Id
6 голосов
/ 24 февраля 2010

Используйте псевдоним как имя переменной в вашем 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 голосов
/ 24 февраля 2010

Псевдоним является наиболее очевидным решением

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

Обратите внимание, что общее табличное выражение доступно только для одного запроса (запрос сразу после него), а временные таблицы действуют для всего пакета.

2 голосов
/ 24 февраля 2010

Используйте псевдоним:

SELECT t1.col1, t2.col3
FROM tbl t1
INNER JOIN tbl t2
    ON t1.col1 = t2.col2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...