如何按属性 SQL 对行进行分组

How to group rows by attribute SQL

假设我有以下关系:

book_id = (1608, 2934, 1608), 股票 = (10, 20, 30)

可以通过以下代码生成:

SELECT book_id, stock
FROM editions JOIN stock ON (editions.isbn = stock.isbn);

我想产生以下关系:

book_id = (1608, 2934), stock = (40, 20),其中1608本书的两组库存相加。我该怎么做呢?我试过:

SELECT book_id, stock
FROM editions JOIN stock ON (editions.isbn = stock.isbn)
GROUP BY book_id;

但这不起作用。

谢谢!

您的查询在大多数数据库中都会失败,因为 stock 不是聚合函数的一部分。 (接受这种非标准语法的数据库是 MySQL。)

您正在查找 sum() 函数。我还推荐 table 别名:

SELECT e.book_id, sum(s.stock)
FROM editions e JOIN
     stock s
     ON e.isbn = s.isbn
GROUP BY e.book_id;