Я никогда не использовал флешку, но предполагая, что вы можете выполнить paginate / page throw, тогда запрос, который вводит значение 0-9, разрешил бы условный выброс страницы.
Например, предполагая orders таблицы, которые имеют 3 столбца, orderdate , ordertype , orderdesc и что требуемый порядок был для столбцов в соответствии с этими столбцами (см. примечания) затем следующее будет содержать столбец от 0 до 9 и, таким образом, разрешит проверку на бросок фейса: -
SELECT *,
(
SELECT count()
FROM ORDERS
WHERE orderdate||ordertype||orderdesc < o.orderdate||o.ordertype||o.orderdesc
ORDER BY orderdate||ordertype||orderdesc
) % 10 AS orderby
FROM ORDERS AS o ORDER BY orderdate||ordertype||orderdesc
- Обратите внимание, что вышеприведенное опирается на порядок сортировки и предложение whereс тем же результатом может потребоваться более сложное предложение WHERE. Вышесказанное предназначено в качестве принципиального примера.
Пример использования
Рассмотрим следующий пример использования приведенного выше. Это генерирует 100 строк заказов со случайно сгенерированными датами и типами заказов в определенных диапазонах, а затем извлекает данные в соответствии с вышеуказанным запросом. Результаты данных underyling и извлеченных данных показаны в разделе результатов.
/* Create Test Environment */
DROP TABLE IF EXISTS orders;
/* Generate and load some random orders */
CREATE TABLE If NOT EXISTS orders (orderdate TEXT, ordertype TEXT, orderdesc TEXT);
WITH RECURSIVE cte1(od,ot,counter) AS
(
SELECT
datetime('now','+'||(abs(random()) % 10)||' days'),
(abs(random()) % 26),
1
UNION ALL SELECT
datetime('now','+'||(abs(random()) % 10)||' days'),
(abs(random()) % 26),
counter+1
FROM cte1 LIMIT 100
)
INSERT INTO orders SELECT * FROM cte1;
/* Display the resultant data */
SELECT rowid,* FROM orders;
/* Display data with generated page throw indicator */
SELECT rowid,*,
(
SELECT count()
FROM ORDERS
WHERE orderdate||ordertype||orderdesc < o.orderdate||o.ordertype||o.orderdesc
ORDER BY orderdate||ordertype||orderdesc
) % 10 AS orderby
FROM ORDERS AS o ORDER BY orderdate||ordertype||orderdesc;
/* Clean up */
DROP TABLE IF EXISTS orders;
Результаты (частичные)
Основные данные (не отсортированы по rowid (rowid включен для сравнения)цели)): -
Извлеченные данные с индикатором броска страницы (выделено)
- Очевидно, что вы, скорее всего, не выбросите страницу для первой строки.
- Поскольку для удобства используется объединение трех столбцов, результаты могут быть немного запутанными, посколькунапример, 2 будет больше 11 и т. д.
- rowid указывает исходную позицию, поэтому показывает, что данные были отсортированы.