Вернуть да / нет из выбора, нет управления потоком или добавления таблиц в базу данных - PullRequest
0 голосов
/ 30 апреля 2019

Я выполняю оператор select, проверяющий наличие выходного подзапроса froma. Его текущая форма выглядит следующим образом.

select exists(subquery)

Теперь параметры решения:

  • Выходные данные должны быть одной строкой с одной записью: «Да» или «нет»
  • Запрещена любая форма управления потоком
  • Добавление таблицы в базу данных запрещено (например, «переводить» 1 в Да и 0 в Нет с помощью запроса)

Я немного растерялся. Моя лучшая идея - создать таблицу «1-да, 0-нет» с помощью подзапроса, но я не представляю, как это можно сделать.

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Что ж, это не красиво, но вы можете объединить таблицу поиска вместе с SELECT и UNION в подзапросе, а затем присоединиться к ней из вашего EXISTS запроса.

Setвверх действительно хромой таблицы:

create table tbl (value integer);
insert into tbl
select 1;

Затем запрос:

select
  a.answer
from 
  (select exists(select 1 from tbl where value = 3) as value) as e
  join
  (select 1 as value, 'yes' as answer
   union
   select 0, 'no'
  ) as a
    on 
      a.value = e.value

В этом случае таблица tbl имеет только одну строку и один столбец, который содержит 1, поэтому EXISTS возвращает 0, а внешний запрос возвращает no.

Вот SQL Fiddle: http://www.sqlfiddle.com/#!9/a4f9ef/2/0

0 голосов
/ 30 апреля 2019

Вы, кажется, хотите выражение case:

select (case when exists(subquery) then 'yes' else 'no' end)

Лично я предпочитаю вашу версию, которая возвращает 0 или 1 вместо 'no' или 'yes'.

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