mysql - 计算别名

标签 mysql sql

我有这个问题

SELECT number_title,
   (SELECT COUNT(*)
    FROM poll_stemmen
    )   AS total_number,

    (SELECT COUNT(ps.number_id)
            FROM poll_stemmen
             group by ps.number_id
            ) AS voted
   FROM poll_numbers AS pn
   RIGHT JOIN poll_stemmen AS ps ON ps.number_id = pn.id
   GROUP BY ps.number_id

但我想在 voted 和 total_number 字段之间进行计算

所以我做了这个查询:

SELECT number_title,
   (SELECT COUNT(*)
    FROM poll_stemmen
    )   AS total_number,

    (SELECT COUNT(ps.number_id)
            FROM poll_stemmen
             group by ps.number_id
            ) AS voted, (SELECT voted) AS another_number

         FROM poll_numbers AS pn
         RIGHT JOIN poll_stemmen AS ps ON ps.number_id = pn.id
         GROUP BY ps.number_id

但是我得到这个错误:

Reference 'voted' not supported (reference to group function)

我该如何解决这个问题?

最佳答案

您可以将查询包装在子查询中。然后在外部查询中以任何你喜欢的方式使用它的别名,例如

SELECT number_title, total_number, voted, 
       total_number * voted AS myCalculatedColumn
FROM (
SELECT number_title,
       (SELECT COUNT(*)
        FROM poll_stemmen) AS total_number,    
       (SELECT COUNT(ps.number_id)
        FROM poll_stemmen
        group by ps.number_id) AS voted
FROM poll_numbers AS pn
RIGHT JOIN poll_stemmen AS ps ON ps.number_id = pn.id
GROUP BY ps.number_id ) t

关于mysql - 计算别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30781973/

相关文章:

sql - 将所有列(在表格中)的所有零(如果有的话)更改为...比如 1

sql - 在字符串列上使用 GROUP BY 时未获得分组结果

java - Hibernate Criteria API 中两个属性之间的日期

sql - 数据库中最近更新的表的列表

mysql - 不使用 mysqldump 复制/复制数据库

php - 运行 Laravel 4 迁移时出现 SQL 1005 错误

PHP MYSQL RSS FEED 限制问题

MySQL:外键

mysql - 使用纯 SQL 查询找出表中的值何时保持不变,无需任何过程或函数

sql - 需要帮助将表从 sql server 2008 导出到文本文件