码迷,mamicode.com
首页 > 数据库 > 详细

【sql小坑】在group by里用select字段的别名?

时间:2018-05-30 17:31:29      阅读:924      评论:0      收藏:0      [点我收藏+]

标签:alias   ble   tin   strong   user   意思   ali   column   split   

背景

-- 求每个用户的拥有的产品数,其中userid需要简单split出来
SELECT
            split (id, ‘-‘) [ 0 ] AS userid,
            count(DISTINCT productid) AS productid
        FROM
            user_product
        WHERE
            dt >= ‘2018-05-01‘
        GROUP BY
            userid

你是不是想这样用?

报错和原因

看看报错

Invalid table alias or column reference ‘userid‘: (possible column names are: id, productid)

什么意思,意思是where和group by是先执行,然后才有select,所以group by的只能是已from的表字段或计算的字段。

修改

如何修改,有很多方法,看方不方便:

  1. 先不count,外面再嵌套一层再count;
  2. 改为group by split (id, ‘-‘) [ 0 ];
  3. 单独作为子查询再去连主表。

【sql小坑】在group by里用select字段的别名?

标签:alias   ble   tin   strong   user   意思   ali   column   split   

原文地址:https://www.cnblogs.com/everda/p/9111920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!