Этот ответ не специфичен для SQLite, так как я его мало использовал, но больше для SQL в целом.
Есть две вещи: вы заботитесь о воспроизводимых результатах или нет. Если вы этого не сделаете, вы можете сделать что-то вроде:
SELECT *
FROM my_table
ORDER BY random();
В противном случае, когда я хочу воспроизвести случайное перемешивание с SQL в целом, я обычно хэширую конкатенацию значения, скажем, «1001» с несколькимизначения строки.
SELECT MD5('1001' || my_column_1 || my_column_2) as r, my_column_1, my_column_2
FROM my_table
ORDER BY r;
Конечно, это хорошо, только если значения в ваших столбцах изменяются.
Вы можете применить ограничение, например
SELECT MD5('1001' || my_key_1 || my_key_2) as r, my_key_1, my_key_2
FROM my_table
ORDER BY r
LIMIT 10000;
, чтобы получить несколько партий, а не всю таблицу.
Надеюсь, я ответил на ваш вопрос, хорошего дня!