我有一个在 SELECT 语句中有别名的 SQL 查询
选择 CONCAT(YEAR(r.Date),_utf8'-',_utf8'Q',QUARTER(r.Date)) AS 'QuarterYear'
稍后,我想在我的 group by 声明中提到这一点。
我有点困惑……我应该用反引号、单引号把它包起来还是把它解开放在他的组中
GROUP BY `QuarterYear
还是我应该这样做?:GROUP BY 'QuarterYear'
或者只是这个?:按季度分组
您可以使用反引号转义别名或列名,但仅当您的列有保留字作为其名称(即timestamp
)时才需要,因此您不需要。避免使用保留字,因此您永远不需要使用反引号转义列名。
您永远不应该使用单引号来包装列名,这仅适用于数据。
编辑:您不能按组列的别名(即MIN()
,等)进行分组MAX()
,COUNT()
但可以使用函数的别名(即CONCAT()
)。
不幸的是,您不能使用别名,因为别名在 GROUP BY 中尚不可用。您可以使用列的编号:
SELECT CONCAT(YEAR(r.Date),_utf8'-',_utf8'Q',QUARTER(r.Date)) AS 'QuarterYear'
GROUP BY 1;
在这种特殊情况下,您可以只使用 DISTINCT 修饰符:
SELECT DISTINCT CONCAT(YEAR(r.Date),_utf8'-',_utf8'Q',QUARTER(r.Date)) AS 'QuarterYear'