2013-11-12 3 views

ответ

0

В T-SQL можно использовать Exists условие для данного требования как:

select [fields], 
     case when exists (select <criteria> from <tablename>) then 1 
      else 0 
      end as SubqueryResult 
from <tablename>  
where a=b 
3

Пожалуйста, попробуйте:

select [fields], 
     case when (select COUNT(*) from YourTable with criteria)>0 then 
      1 
     else 
      0 
     end 
     as SubqueryResult 
where a=b 
+1

Спасибо. Я пробовал и то и другое, и они оба работают. Я использую T-SQL, EXISTS не эффективнее, чем COUNT? – user2401849

+0

существует, возвращает результат, как только он находит запись с совпадением where-clause, в то время как count должен сканировать целую таблицу, чтобы определить счетчик. Таким образом, существует быстрее – TechDo

0

Также в TSQL вы можете сделать это с помощью ISNULL() и SELECT TOP 1:

select [fields], 
     ISNULL((SELECT TOP 1 1 FROM YourTable WHERE <criteria>),0) 
     as SubqueryResult 
where a=b 
Смежные вопросы