我今天有点代码盲,因为我正在尝试编写这个简单的查询,应该选择所有的书并显示它们的价格。问题是价格存储在book_sales中,当我使用它时,它将显示书籍已售出的所有时间。因此我想按标识符对它们进行分组,所以我只能看到:
但是现在我看到同一个人一遍又一遍地重复着。
尝试使用此查询解决:
select title,sales_price,identifiers
from BOOKS
INNER JOIN BOOK_SALES
on BOOKS.book_id = BOOK_SALES.book_id
GROUP BY IDENTIFIERS
我得到“[Err] 42000 - [SQL Server]列'BOOKS.TITLE'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。”
什么是错误的家伙?
答案 0 :(得分:2)
问题从您的错误消息中可见一斑。像这样使用GROUP BY。
select title,sales_price,identifiers
from BOOKS
INNER JOIN BOOK_SALES
on BOOKS.book_id = BOOK_SALES.book_id
GROUP BY title,sales_price,identifiers
答案 1 :(得分:1)
将您的代码更改为:
select DISTINCT title,sales_price,identifiers
from BOOKS
INNER JOIN BOOK_SALES
on BOOKS.book_id = BOOK_SALES.book_id
GROUP BY IDENTIFIERS, title,sales_price
告诉我它是否有效
答案 2 :(得分:1)
GROUP BY
语句与聚合函数结合使用,可以按一列或多列对结果集进行分组。w3schools
在您的查询中,如果您没有汇总数据,则可以使用DISTINCT
。
select DISTINCT title,sales_price,identifiers
from BOOKS
INNER JOIN BOOK_SALES
on BOOKS.book_id = BOOK_SALES.book_id