需要将LIMIT更改为其他内容

时间:2015-10-18 15:48:10

标签: sql postgresql limit

有没有办法改变“LIMIT 1”并获得相同的输出?我必须得到客户的姓名和书籍数量最多的书籍

SELECT stud.skaitytojas.name, stud.skaitytojas.surname,
       COUNT (stud.skaitytojas.nr) AS quantity
FROM stud.egzempliorius , stud.skaitytojas
WHERE stud.egzempliorius.client = stud.skaitytojas.nr
GROUP BY stud.skaitytojas.nr
ORDER BY quantity DESC
LIMIT 1

2 个答案:

答案 0 :(得分:2)

Postgres支持ANSI标准FETCH FIRST 1 ROW ONLY,因此您可以这样做:

SELECT s.name, s.surname, COUNT(s.nr) AS quantity
FROM stud.egzempliorius e JOIN
     stud.skaitytojas s
     ON e.client = s.nr
GROUP BY s.name, s.surname
ORDER BY quantity DESC
FETCH FIRST 1 ROW ONLY;

还要注意使用表别名和正确的JOIN语法。我还希望列出SELECTGROUP BY中的列,但如果s.nr是唯一的,那么这是可选的。

答案 1 :(得分:0)

您可以使用row_number()

选择数量最多的行
SELECT * FROM (
    SELECT * , row_number() over (order by quantity desc) rn FROM (
        SELECT stud.skaitytojas.name, stud.skaitytojas.surname, COUNT (stud.skaitytojas.nr) AS quantity
        FROM stud.egzempliorius , stud.skaitytojas
        WHERE stud.egzempliorius.client = stud.skaitytojas.nr
        GROUP BY stud.skaitytojas.name, stud.skaitytojas.surname
    ) t
) t where rn = 1

如果您想包含最高数量的关系,请改用rank()