2010-02-24 13 views

risposta

6

utilizzare un alias come un nome di variabile in 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

utilizzare un alias:

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

è possibile fare riferimento, basta essere sicuri di utilizzare una tabella alias

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

Alias ​​è la soluzione più ovvia

SELECT * FROM x1 AS x,y1 AS y 

Tuttavia, se il tavolo è il risultato di una query un comune espressioni di tabella è molto utile

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

Una terza soluzione - indicata quando la query dura a lungo - è tabelle temporanee:

SELECT * 
INTO #monkey 
FROM chimpanzee 

SELECT * FROM #monkey m1,#monkey m2 

DROP TABLE #MONKEY 

Nota un'espressione di tabella comune è disponibile solo per una query (la query immediatamente successiva) e le tabelle temporanee per l'intero batch.

+0

nel primo esempio, si utilizza la vecchia sintassi di join: 'SELECT * FROM x1 AS x, y1 AS y' è molto meglio utilizzare la sintassi di join corrente: 'SELECT * FROM x1 AS x INNER JOIN y1 AS y ON .... ' –

+0

Ti avrei dato un upvote ma bot quando usi la vecchia sintassi implicita del join nei tuoi esempi in quanto si tratta di una pratica di programmazione molto scarsa. Inoltre stai mostrando cross join che dubito che l'utente desideri e questi tipi di cross join accidentali sono uno dei motivi per cui questa sintassi è stata sostituita 18 anni fa con la sintassi esplicita del join. – HLGEM

+0

I frammenti di codice sopra sono solo per illustrare il problema in questione. –

Problemi correlati