SQL-сервер возвращает только одну строку или ноль - PullRequest
2 голосов
/ 18 ноября 2010

У меня есть SQL-запрос, который я хочу вернуть только в 1 строку.Если есть несколько строк, я хочу вернуть ноль.

Я думаю, я могу сделать это с чем-то вроде

SELECT whatever FROM MyTable
 WHERE something = myQuery
   AND ( COUNT(SELECT whatever FROM MyTable
             WHERE something = myQuery) = 1)

, но это довольно неприятно, и я подумал, есть ли более аккуратный способделает это.

Ответы [ 5 ]

4 голосов
/ 18 ноября 2010

Не можете ли вы сделать:

SELECT whatever FROM
    (
       SELECT whatever, COUNT(*) As NumRecords
       FROM MyTable
       WHERE something = myQuery
       GROUP BY whatever
       HAVING NumRecords = 1
    )
1 голос
/ 18 ноября 2010

Ну, может быть и другой способ:

select f1, f2, f3
  from your_table
 where f4 = f5*2
 group by f1, f2, f3
having count(1) = 1

Не знаю, подходит ли он к вашему решению.

1 голос
/ 18 ноября 2010

Вы можете использовать предложение IF, чтобы проверить одну строку и выбрать только в этом случае:

IF SELECT COUNT(*) FROM MyTable WHERE something = myQuery) = 1
  BEGIN
    SELECT whatever FROM MyTable
     WHERE something = myQuery
  END
0 голосов
/ 24 апреля 2017

Мы тоже можем добавить это,

SELECT max(whatever) as whatever
FROM MyTable
WHERE something = myQuery
HAVING  COUNT(*) = 1
0 голосов
/ 30 ноября 2010

set rowcount 1

Перед оператором выбора.

Позже,

set rowcount 0

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