【发布时间】:2021-11-26 15:09:51
【问题描述】:
我正在尝试为数据库中的曲目总数生成一行,目前我为一种媒体类型提供了一行,为另一种类型提供了一行,我只需要为此生成一个总行但我想不通。
我尝试了下面的代码,希望它可以工作,但它出现了关于 GROUP BY 子句中不允许聚合函数的错误
SELECT CASE
WHEN m.name LIKE '% AAC %' OR m.name LIKE 'AAC %' THEN 'AAC'
WHEN m.name NOT LIKE '% AAC %' OR m.name NOT LIKE 'AAC %' THEN 'non-AAC'
WHEN COUNT(m.name) <> 0 THEN 'Total'
END AS Media, COUNT(t.MediaTypeID) AS 'Tracks'
FROM MediaType m, Track t
WHERE m.MediaTypeID = t.MediaTypeID
GROUP BY Media
我哪里错了?这是在 SQLite 中完成的
【问题讨论】:
-
在子查询中做case部分,然后按结果分组。
-
ANSI-92 已经存在 30 年了,是时候停止使用过时的连接语法了。 sqlblog.org/2009/10/08/bad-habits-to-kick-using-old-style-joins
-
是的,我使用 SQLite