Как выбрать ноль или одну запись из фиктивной таблицы в Ingres - PullRequest
5 голосов
/ 15 октября 2011

В большинстве продуктов SQL я могу выбрать ни из таблицы, ни из фиктивной таблицы, например:

-- Oracle
SELECT 1 FROM DUAL

-- Many other SQL products (including Ingres)
SELECT 1

Иногда я хочу добавить условие в вышеприведенный оператор, чтобы получить 0 или1 запись, в зависимости от условия

-- Oracle
SELECT 1 FROM DUAL WHERE 1 = 0

-- Many other SQL products (but not Ingres)
SELECT 1 WHERE 1 = 0

Но вышеописанное не работает для Ingres 10.0.Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 15 октября 2011

Я не использовал Ingres, но я предполагаю из вашего вопроса, что FROM является обязательным, если есть WHERE? В таком случае как насчет

SELECT 1 FROM (SELECT 1 AS C) AS T WHERE 1 = 0

Или

SELECT CASE WHEN 1 = 0 THEN 1 ELSE 0 END

(последний всегда возвращает строку, но позволяет проверить условие)

0 голосов
/ 19 августа 2014

AFAIK В системном каталоге iidbconstants есть только одна строка, так что вы можете использовать это. Я не могу вспомнить случай, когда есть несколько строк, но вы можете добавить DISTINCT в случае:

select distinct 1 from iidbconstants
Executing . . .


+------+
|col1  |
+------+
|     1|
+------+
(1 row)
continue
* select distinct 1 from iidbconstants where 1 = 0
Executing . . .


+------+
|col1  |
+------+
+------+
(0 rows)
...