我可以在postgresql中对由“row_number()”函数创建的列进行排序吗?

时间:2014-06-14 12:15:49

标签: sorting lua postgresql-9.2 lua-table

我有一个select语句,其中包含对row_number()函数的调用,从技术上讲,它为每行返回一个唯一的id。

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)返回a.row_id< b.row_id end)

我只是想避免不得不循环遍历结果以添加唯一ID然后对其进行排序,但也许这是不可能的。

1 个答案:

答案 0 :(得分:0)

我不知道如何在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中使用这些列。