在子查询中使用别名

时间:2011-04-11 12:13:05

标签: sql count integer-division

我的一个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生成的,因此定制它可能更困难。)

1 个答案:

答案 0 :(得分:4)

两种选择:

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,则可能必须设置条件。