相关疑难解决方法(0)

如何只用postgres连接连接表中的一行?

我有以下架构:

CREATE TABLE author (
    id   integer
  , name varchar(255)
);
CREATE TABLE book (
    id        integer
  , author_id integer
  , title     varchar(255)
  , rating    integer
);
Run Code Online (Sandbox Code Playgroud)

我希望每个作者都有它的最后一本书:

SELECT book.id, author.id, author.name, book.title as last_book
FROM author
JOIN book book ON book.author_id = author.id

GROUP BY author.id
ORDER BY book.id ASC
Run Code Online (Sandbox Code Playgroud)

显然你可以在mysql中做到这一点:在MySQL中加入两个表,从第二个表中只返回一行.

但是postgres给出了这个错误:

错误:列"book.id"必须出现在GROUP BY子句中或用于聚合函数:SELECT book.id,author.id,author.name,book.title as last_book FROM author JOIN book book ON book.author_id = author.id GROUP BY author.id ORDER BY book.id ASC

这是因为:

当GROUP BY存在时,SELECT列表表达式无法引用除聚合函数之外的未分组列,因为对于未分组列,将返回多个可能的值. …

sql postgresql join

35
推荐指数
5
解决办法
3万
查看次数

标签 统计

join ×1

postgresql ×1

sql ×1