gpt4 book ai didi

postgresql - 在 Postgres 中根据另一个表过滤一个表

转载 作者:行者123 更新时间:2023-11-29 13:08:59 26 4
gpt4 key购买 nike

我有两个包含以下列的表:

作者

id | name | age

书籍

authorId | title | pages

我需要以某种方式获得书籍超过 200 页的作者姓名中的前五名。我尝试了一些类型的连接和子查询,这是我最好的尝试:

SELECT 
author.name,
(SELECT COUNT(*) FROM books WHERE pages > 200 AND 'books.authorId' = 'author.id') AS PageCount
FROM
authors AS author
ORDER BY
PageCount DESC

不幸的是,它返回 PageCount 为 0。

获得所需结果的方法是什么?

最佳答案

您可以使用内部连接、计数和分组来代替子查询:

    SELECT  au.name, COUNT(*) PageCount
FROM authors AS au
INNER JOIN books ON "books"."authorId" = au.id
WHERE books.pages > 200
GROUP BY au.name
ORDER BY PageCount DESC

不要在列名称周围使用单引号。如果需要,请改用反引号。单引号用于文字字符串,而不是列名。

关于postgresql - 在 Postgres 中根据另一个表过滤一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57233819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com