函数中的SQL数字行(应该很简单)

时间:2017-04-11 00:53:10

标签: sql postgresql

我想对查询返回的表的行进行编号。更具体地说,我的函数随机化了表的行。我想要一个额外的列,从随机化完成后的1-n开始计算。这是我当前的randomize函数代码:

create or replace function random_surnames(num integer)
returns table(name character(30)) as
$$
begin 
    RETURN QUERY
    select public."Surname".surname
    from public."Surname" 
    order by random()
    Limit num;
end;
$$
language 'plpgsql' volatile;`

它应该很简单,我似乎无法在线找到解决方案,因为我没有使用正确的关键字。

1 个答案:

答案 0 :(得分:2)

这可以使用ROW_NUMBER和子查询来实现,以下是转换查询的示例:

select *, ROW_NUMBER() OVER () FROM
(select public."Surname".surname
from public."Surname" 
order by random()
Limit num) subq;