Я использую базу данных Informix (версия 7.32). В одной операции я создаю временную таблицу с идентификатором обычной таблицы и последовательным столбцом (чтобы все идентификаторы из обычной таблицы были непрерывно пронумерованы). Но я хочу вставить информацию из обычной таблицы, упорядоченной по идентификатору, например:
CREATE TEMP TABLE tempTable (id serial, folio int );
INSERT INTO tempTable(id,folio)
SELECT 0,folio FROM regularTable ORDER BY folio;
Но это создает синтаксическую ошибку (из-за ORDER BY)
Есть ли способ заказать информацию, а затем вставить ее в tempTable?
ОБНОВЛЕНИЕ. Причина, по которой я хочу это сделать, заключается в том, что обычная таблица содержит около 10 000 элементов, а в файле jsp она должна отображать каждую запись, но это займет много времени, поэтому настоящая причина, по которой я хочу это сделать, - разбить на страницы выход. В этой версии Informix нет Limit
ни Skip
. Я не могу перенумеровать серийный номер, потому что он находится в отношениях, и это единственное решение, которое мы могли бы получить фиксированное количество результатов на одной странице (например, 500 результатов на страницу). В обычной таблице пропущены идентификаторы (называемые фолио), поскольку они были удалены. если бы я поставил
SELECT * FROM regularTable WHERE folio BETWEEN X AND Y
Я мог бы получить, может быть, 300 на одной странице, затем 500 на следующей странице.
Решение проблемы
Вы можете сделать это, разбив SQL на две временные таблицы:
CREATE TEMP TABLE tempTable1 (
id serial,
folio int);
SELECT folio FROM regularTable ORDER BY folio
INTO TEMP tempTable2;
INSERT INTO tempTable1(id,folio) SELECT 0,folio FROM tempTable2;
Комментариев нет:
Отправить комментарий