sql group by语句只能用数字来分组吗?

zbq4xfa0  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(437)

我现在正在学习sql,遇到这样的查询时有点困惑:

SELECT CASE 
        WHEN url like '%abc.com%'THEN 'abc'
      When url like '%def.com%'THEN 'def'
      When url like '%smiley.com%' THEN 'Smiley'
      Else 'others'
      End AS 'sites', count(*)
    FROM websites_sources
    GROUP BY 1;

上面的查询可以正常工作,但前提是GROUPBY语句使用1。如果我按“sites”写入group,结果只显示“others”和所有行的总计数(而不是仅显示“others”和其他站点的计数)。
我的问题是,对于groupby语句,我们只能使用number来表示分组,而不能使用列的名称?
谢谢你的帮助!

kknvjkwl

kknvjkwl1#

仅对字符串和日期常量使用单引号。不要对列别名使用单引号。你会把自己搞糊涂的。
试试这个:

SELECT (CASE WHEN url like '%abc.com%' THEN 'abc'
             WHEN url like '%def.com%' THEN 'def'
             WHEN url like '%smiley.com%' THEN 'Smiley'
             ELSE 'others'
         END) AS sites,
        count(*)
FROM websites_sources
GROUP BY sites;

您正在按字符串分组 'sites' ,它是一个常量,而不是名为 sites .

相关问题