首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询问题:“组函数使用无效”

SQL查询问题:“组函数使用无效”
EN

Stack Overflow用户
提问于 2013-02-09 19:41:30
回答 4查看 153关注 0票数 1

注意:我知道查询还没有完成,我试着一次把它拼凑在一起。我在这一点上遇到了错误。

基本上,我得到的是MySQL错误

群函数的无效使用

我也搞不懂为什么。

这是我正在查询的数据库的图表:

问题是:

“显示已出版两本以上图书的出版商名称和已出版图书的数量。记录应按出版图书的数量降序排列,然后按升序排列。您的输出应与下面显示的内容相匹配(包括列标题)。”

输出应该如下所示:

这是我正在尝试的查询:

代码语言:javascript
复制
select publisher.name as "Publisher Name", count(book.isbn)
from publisher as "Book Count"
join book using (publisherID)
where count(book.isbn) > 2
group by publisher.name;
EN

回答 4

Stack Overflow用户

发布于 2013-02-09 20:01:20

试一试

代码语言:javascript
复制
SELECT MIN(p.name) AS `Publisher Name`, COUNT(b.isbn) AS `Book Count`
  FROM publisher AS p INNER JOIN 
       book      AS b ON p.PublisherID = b.PublisherID
GROUP BY p.publisherID
HAVING COUNT(b.isbn) > 2

这是木琴

票数 1
EN

Stack Overflow用户

发布于 2013-02-09 19:52:57

问题在于您的from语句。正确的语法是:

代码语言:javascript
复制
select publisher.name as "Publisher Name", count(book.isbn)  as "Book Count"
from publisher join book
     using (publisherID)
group by publisher.name;

(book.isbn)>2

您为publisher表提供了Book Count的别名,而不是计数。

票数 0
EN

Stack Overflow用户

发布于 2013-02-09 19:57:50

2期:

  1. 您已经将别名添加到表中,而不是列中。
  2. 不能在COUNT条件下使用WHERE。您需要使用HAVING

尝试以下几点:

代码语言:javascript
复制
SELECT
    publisher.name as `Publisher Name`,
    COUNT(book.isbn) as `Book Count`
FROM
    publisher 
JOIN
    book USING (publisherID)
GROUP BY
    publisher.name
HAVING
    `Book Count` > 2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14790781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档