【问题标题】:Using alias with subqueries对子查询使用别名
【发布时间】:2011-04-11 12:13:05
【问题描述】:

我的一个 SQL 请求有问题,它是由子查询发出的。

我正在尝试划分两个COUNT(*) 请求的结果:

SELECT (SELECT COUNT(*) FROM book) nb_books,
       (SELECT COUNT(*) FROM author) nb_authors,
       nb_books / nb_authors

(我的请求要复杂得多,我为示例进行了简化)

但是 MySQL 一直告诉Unknown column nb_books in field list。有没有办法 让这个请求生效?

感谢您的回答。

(PS:我的请求是Doctrine从DQL生成的,所以自定义可能比较困难。)

【问题讨论】:

    标签: sql count integer-division


    【解决方案1】:

    两个选择:

    SELECT (SELECT COUNT(*) FROM book)  as nb_books ,
           (SELECT COUNT(*) FROM author) as nb_authors,
           (SELECT COUNT(*) FROM book) /  (SELECT COUNT(*) FROM author)
    

    或者

    SELECT nb_books, nb_authors, nb_books/nb_authors
    FROM (
        SELECT (SELECT COUNT(*) FROM book) nb_books,
               (SELECT COUNT(*) FROM author) nb_authors
    )
    

    我更喜欢第二种方式。如果 nb_authors 可能等于 0,您可能需要设置一个条件。

    【讨论】:

    • 感谢您的回答。它适用于我的简单示例,但不幸的是我的请求非常复杂,我无法让它与 Doctrine 一起使用。没关系。
    猜你喜欢
    • 1970-01-01
    • 2021-08-16
    • 2020-06-12
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多