Как мне сделать IF в запросе Microsoft SQL SELECT? - PullRequest
3 голосов
/ 01 июня 2011

Я абсолютный новичок в SQL.Пример: я хочу сделать запрос, чтобы выбрать людей, чьи имена начинаются с X , если результат 0 , я хочу выбрать людей, чьи имена начинаются с Y.

Как мне это сделать?Спасибо.

Ответы [ 4 ]

3 голосов
/ 01 июня 2011

Я интерпретирую вопрос следующим образом: показывать имена, начинающиеся с Y, если имена, начинающиеся с X, не найдены.Это решение будет быстрым, поскольку оно сократит существующее с момента обнаружения 1 записи

if exists(select * from table where name like 'X%')
  begin
    select * from table where name like 'X%'
  end
else
  begin
    select * from table where name like 'Y%'
  end

В идеале столбец имени должен быть проиндексирован, чтобы это работало хорошо.

1 голос
/ 02 июня 2011

Может быть, это лучшее решение:

select * from table where name like 'X%'

if @@ROWCOUNT = 0
   select * from table where name like 'Y%'
0 голосов
/ 02 июня 2011

Вот решение на основе множеств:

SELECT * 
  FROM table 
 WHERE NAME LIKE 'X%'
UNION
SELECT * 
  FROM table 
 WHERE NAME LIKE 'Y%'
       AND NOT EXISTS (
                       SELECT * 
                         FROM table AS T1
                        WHERE T1.NAME LIKE 'X%'
                      );
0 голосов
/ 02 июня 2011

Есть способы сделать это в одном операторе SQL, но они чрезвычайно дороги (как по времени, так и по ресурсам). Лучше всего выполнять такую ​​логику в хранимой процедуре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...