Кажется, что многие из перечисленных идей все еще используют порядок
Однако, если вы используете временную таблицу, вы можете назначить случайный индекс (как предлагали многие решения), а затем получить первый, который больше произвольного числа в диапазоне от 0 до 1.
Например (для DB2):
WITH TEMP AS (
SELECT COMLUMN, RAND() AS IDX FROM TABLE)
SELECT COLUMN FROM TABLE WHERE IDX > .5
FETCH FIRST 1 ROW ONLY