函数中表的SQL行数(应该很容易)

函数中表的SQL行数(应该很容易),sql,postgresql,Sql,Postgresql,我想对查询返回的表的行进行编号。更具体地说,我的函数随机化表中的行。我想要一个额外的列,在随机化完成后从1-n开始计数。以下是我目前使用的随机函数代码: create or replace function random_surnames(num integer) returns table(name character(30)) as $$ begin RETURN QUERY select public."Surname".surname from public."

我想对查询返回的表的行进行编号。更具体地说,我的函数随机化表中的行。我想要一个额外的列,在随机化完成后从1-n开始计数。以下是我目前使用的随机函数代码:

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;`

这应该足够简单,我似乎无法在线找到解决方案,可能是因为我没有使用正确的关键字。

这可以通过使用行号和子查询来实现,下面是一个将查询转换为该查询的示例:

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

这可以通过使用行数和子查询来实现,下面是一个将查询转换为该行数的示例:

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

以秒击败我…:)+1工作起来很有魅力!非常感谢,我对此困惑了一个多小时!现在它有意义了@JorgeCampos感谢编辑wellBeat me by seconds…:)+1工作起来很有魅力!非常感谢,我对此困惑了一个多小时!现在它有意义了@JorgeCampos也感谢您的编辑