Подтвердить что ты не робот

Как выбрать пустой набор результатов?

Я использую хранимую процедуру в MySQL с оператором CASE.

В предложении ELSE CASE (эквивалентно по умолчанию:) я хочу выбрать и вернуть пустой набор результатов, избегая при этом ошибки SQL, не обрабатывая случай ELSE, и вместо этого возвращать пустой набор результатов, как если бы в регулярном запросе не было бы строк.

До сих пор мне удалось сделать это, используя что-то вроде:
Select NULL From users Where False

Но я должен назвать существующую таблицу, такую ​​как "пользователи" в этом примере. Он работает, но я бы предпочел более элегантный способ, который не прерывается, если в конечном итоге имя таблицы будет переименовано или опущено.

Я пробовал Select NULL Where False, но он не работает.

Использование Select NULL не возвращает пустой набор, а одну строку с столбцом с именем NULL и значением NULL.

4b9b3361

Ответ 1

В MySQL есть фиктивная таблица с названием "dual", которую вы должны использовать.

select
    1
from
    dual
where
    false

Это всегда даст вам пустой результат.

Ответ 2

Это должно работать на большинстве БД, проверенных на Postgres и Netezza:

SELECT NULL LIMIT 0;

Ответ 3

Как насчет

 SELECT * FROM (SELECT 1) AS TBL WHERE 2=3

Проверено в myphp, и оно также работает в sqlite и, возможно, в любом другом движке db.

Ответ 4

T-SQL (MSSQL):

SELECT Top 0 1;

Ответ 5

Это, вероятно, будет работать во всех базах данных.

SELECT * FROM (SELECT NULL AS col0) AS inner0 WHERE col0 IS NOT NULL;

Ответ 6

Как насчет этого?

SELECT 'MyName' AS EmptyColumn
FROM dual
WHERE 'Me' = 'Funny'

Ответ 7

SELECT TOP 0 * FROM [dbo].[TableName]

Это разумный подход к оператору постоянной проверки.

Ответ 8

SELECT * FROM (SELECT NULL) WHERE 0

Ответ 9

В PostgreSQL простой

SELECT;

работает. Вы даже не получите никаких столбцов с надписью "unknown".
Обратите внимание, однако, он все еще говорит, что получена одна строка.