Могу ли я отсортировать lua таблицу, в которой есть столбец, созданный функцией row_number () в postgresql?

У меня есть оператор выбора, который включает вызов функции row_number (), которая технически дает мне уникальный идентификатор для каждой возвращаемой строки.

SELECT f.*, row_number() as row_id OVER(ORDER BY f.name)
FROM widgets f

Было бы здорово, если бы я мог каким-то образом использовать этот row_id для сортировки таблицы. Теперь я хотел бы попытаться использовать row_number для сортировки следующим образом:

table.sort (mytable, function (a, b) return a.row_id ‹b.row_id end)

Я просто пытаюсь избавить себя от необходимости перебирать результаты, чтобы добавить уникальный идентификатор, а затем отсортировать его, но, возможно, это невозможно.


person dot    schedule 14.06.2014    source источник
comment
Почему бы не просто select ... order by f.name и последовательно не читать набор результатов?   -  person Egor Skriptunoff    schedule 14.06.2014


Ответы (1)


Я не знаю, как бы вы выразили это в Lua, но в Postgres вы можете заказать это по псевдониму столбца. Запрос Postgres будет таким:

SELECT f.*, row_number() OVER (ORDER BY f.name) as row_id
FROM widgets f
ORDER BY row_id;

Тот факт, что вы не хотите заказывать по f.name, говорит о том, что у вас есть дубликаты. Обратите внимание, что порядок в SQL не гарантирует стабильности. То есть повторяющиеся имена могли быть в разном порядке. Если у вас есть способ сделать упорядочение стабильным (то есть путем однозначной идентификации каждой строки), вы можете использовать эти столбцы в order by.

person Gordon Linoff    schedule 14.06.2014