#sqlite
Вопрос:
У меня есть база данных sqlite с этой таблицей примеров:
CREATE TABLE PROVA ( c1 TEXT NOT NULL UNIQUE, c2 TEXT NOT NULL, c3 TEXT NOT NULL );
Эта таблица будет пустой в определенное время (например, во время инициализации), и мне нужен запрос, который может возвращать такой вывод без необходимости указывать имя столбцов (фиктивное значение для каждого столбца).
c1 c2 c3 -------- -------- -------- dummy dummy dummy
Ответ №1:
Мы могли бы использовать здесь трюк профсоюза с помощью RANK
:
WITH cte AS ( SELECT c1, c2, c3, 1 AS pos FROM PROVA UNION ALL SELECT 'dummy', 'dummy', 'dummy', 2 ), cte2 AS ( SELECT c1, c2, c3, RANK() OVER (ORDER BY pos) rn FROM cte ) SELECT c1, c2, c3 FROM cte2 WHERE rn = 1;
Комментарии:
1. столбец таблицы может быть переменным, и я не могу указать его в инструкции select
2. Тогда, возможно, не будет никакого способа удовлетворить ваши требования.
3. Вот чего я боюсь, потому что перед тем, как подать заявление, я провел кое-какие исследования. Спасибо вам за ваши усилия!
4. @Tom Самая большая проблема в том, что в вашей таблице на самом деле нет
dummy
строки. Таким образом, первый CTE в моем ответе в той или иной форме в принципе неизбежен. После создания фиктивных данных может потребоваться несколько действий.5. когда я запускаю свою программу в первый раз, таблица может быть пустой, и я должен справиться с этим