2010-12-08 3 views
1

У меня есть одно решение с левой присоединиться к ниже вопрос, но я ищу для более эффективного запросаВозврат NULL столбцы, если идентификаторы не существует в таблице

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

возвращает все существующие «Идентификаторы» в таблице. Теперь я хочу, чтобы все идентификаторы были возвращены с нулевыми столбцами, если идентификатор не существует в таблице.

EX: Результат должен содержать 3 и 5, хотя идентификаторы не существует в таблице

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

Возможно, нет возможности сделать это более эффективно, чем при использовании LEFT OUTER JOIN. Я должен спросить; Что именно ты пытаешься сделать? Возможно, это то, что принадлежит программированию, а не SQL-запросу. Пахнет таким образом. :) – Teekin 2010-12-08 19:23:13

+1

О каком аромате SQL мы говорим? MySQL? SQL Server? Oracle? Что-то другое...? – rsenna 2010-12-08 19:35:09

ответ

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 

Это должно работать.

Смежные вопросы