在 postgres 我相当确定你可以做这样的事情
SELECT
authors.stage_name,
count(select id from books where books.author_id = authors.id)
FROM
authors,
books;
本质上,在这个例子中,我想在同一个查询中返回一个作者列表以及每个作者写了多少本书。
这可能吗?我怀疑这种方法相当幼稚..
谢谢 :)
在 postgres 我相当确定你可以做这样的事情
SELECT
authors.stage_name,
count(select id from books where books.author_id = authors.id)
FROM
authors,
books;
本质上,在这个例子中,我想在同一个查询中返回一个作者列表以及每个作者写了多少本书。
这可能吗?我怀疑这种方法相当幼稚..
谢谢 :)
好吧,一方面,它将所有作者的笛卡尔积返回到所有书籍,而不管该作者是否写了那本书。
以下是我编写查询以获得您想要的结果的方式:
SELECT a.stage_name, COUNT(b.id)
FROM authors a
LEFT OUTER JOIN books b ON (a.id = b.author_id)
GROUP BY a.id;
如果您使用 SQL,则需要学习如何编写连接查询。连接之于 SQL,就像循环之于应用程序编程语言一样。即,它是您需要了解的基本编程结构。
如何使用连接:
SELECT authors.stage_name, count(*)
FROM authors INNER JOIN books on books.author_id = authors.id
GROUP BY authors.stage_name