2010-12-08 3 views
1

Ich habe eine Lösung mit links für die Frage unten kommen, aber ich bin für eine effizientere AbfrageReturn NULL-Spalten, wenn IDs existieren nicht in der Tabelle

Select * from table1 where Id in (1,2,3,4,5); 

gibt alle vorhandenen „Ids“ suchen in der Tabelle. Jetzt möchte ich, dass alle IDs mit Null-Spalten zurückgegeben werden, wenn die ID nicht in der Tabelle vorhanden ist.

EX: Ergebnis muss 3 und 5 enthalten, obwohl die IDs in der Tabelle nicht vorhandenen

ID Name Designation 
1 John Employee 
2 Nar Manager 
3 **NULL** **NULL** 
4 Esh Executive. 
5 **NULL** **NULL** 
+3

Es gibt wahrscheinlich keine Möglichkeit, dies effizienter als mit einem LEFT OUTER JOIN zu tun. Ich muss fragen; was genau versuchst du zu tun? Vielleicht gehört dies eher zur Programmierung als zur SQL-Abfrage. Riecht so. :) – Teekin

+1

Über welchen Geschmack von SQL sprechen wir? MySQL? SQL Server? Orakel? Etwas anderes...? – rsenna

+0

Sein SQL Server-Geschmack, ich benutze SQL Server 2005 – Nash

Antwort

3
select x.id, y.name, y.designation 
from (
select row_number() OVER(order by id) as id 
from table1 
) x 
left join table1 y 
on x.id = y.id 

Dies sollte arbeiten.

+0

Meine Abfrage wird immer die IDs dynamisch erhalten. – Nash

Verwandte Themen