Есть ли простой оператор SELECT, который создает пустой набор? - PullRequest
4 голосов
/ 09 марта 2012

Есть ли простой и простой способ создать таблицу результатов, в которой указаны столбцы, но нет строк? В теории множеств это называется пустым множеством, но поскольку в реляционных базах данных используются многомерные множества, термин не подходит идеально. Я пробовал эти два запроса, но оба доставляют ровно одну строку, а не ноль строк:

  • SELECT '' AS ID;
  • ВЫБЕРИТЕ ноль AS ID;

Но я хочу получить тот же результат, что и этот запрос:

  • ВЫБЕРИТЕ ИД С НЕСКОЛЬКОГО ГДЕ ЛОЖЬ;

Я ищу более элегантный способ, потому что я не хочу, чтобы включалась таблица, поэтому запрос не зависит от схемы базы данных. Кроме того, общий запрос может быть немного быстрее (не то, чтобы это имело значение для такого запроса).

Ответы [ 3 ]

3 голосов
/ 09 марта 2012
SELECT "ID" LIMIT 0;

Без каких-либо реальных таблиц.

Обратите внимание, что большинство (My) клиентов SQL просто будут отображать «Пустой набор».Тем не менее, он на самом деле делает то, что вы хотите:

create table test.test_table 
select "ID" limit 0;

show create table test.test_table\G

Table: test_table
Create Table: CREATE TABLE `test_table` (
  `ID` varchar(2) character set latin1 NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 голос
/ 09 марта 2012
SELECT * FROM (SELECT NULL AS ID) AS x WHERE 1 = 0
0 голосов
/ 09 марта 2012

Вы можете использовать псевдотаблица DUAL.

SELECT whatever FROM DUAL WHERE 1 = 0

Проверьте документацию (ищите раздел ДВОЙНОЙ).

...