需要将 LIMIT 更改为其他内容

Need to change LIMIT into something else

有没有办法改变 "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

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;

还要注意 table 别名和正确的 JOIN 语法的使用。我也更喜欢在 GROUP BY 中列出 SELECT 中的列,尽管如果 s.nr 是唯一的,那是可选的。

您可以 select 使用 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()