如何重用没有子查询但带有group by的计算字段

时间:2015-02-26 01:29:53

标签: mysql cakephp

假设我有一个table1,其字段为item_id 查询

select item_id + 1 as num1, (select num1) + 1 as num2 from table1

有效,但查询

select count(*) as num1, item_id, (select num1) + 1 as num2 from table1 group by item_id

失败,错误代码:1247。不支持引用'num1'(对组功能的引用)。

我知道我可以嵌套一个计算小计的查询,并在外部查询中使用它,但嵌套/临时表很难处理使用CakePHP。我不能使用用户变量(@ num1:= count(*))因为我需要在同一个select语句中重用数据,并且未定义读/写顺序。有人知道一个简单的解决方法吗?

1 个答案:

答案 0 :(得分:1)

SELECT  num1,
        item_id, 
        num1 + 1 AS num2
    FROM  
      ( SELECT  COUNT(*) AS num1, 
                item_id
            FROM  table1
            GROUP BY  item_id 
      ) AS t;