按计数选择和计算正则表达式组的位置

时间:2011-02-02 05:18:44

标签: sql mysql

你可以看到我想在这里做什么:

select *, count(*) as count
from `songs`
where `band` REGEXP '^[^[:alpha:]]'
group by `band`
order by `band` asc

乐队可以是:

avenged sevenfold
3 days grace
led zeppelin
98 mute
back street boys
beastie boys

我需要这个来选择第一个字符不是alpha的波段,并计算每个波段存在多少行。

不幸的是,我当前的查询似乎只将所有这些查询组合在一起,与REGEXP匹配。

2 个答案:

答案 0 :(得分:1)

您不能选择不在group by子句中的列也不是组函数(count,max ...)

它没关系,因为你不需要对不需要的行进行分组,条件不超过组值(组函数的结果)。

ASC是默认的排序方式,因此您无需指定它。

select band, count(*) as count
from songs
where band REGEXP '^[^[:alpha:]]'
group by band
order by band

答案 1 :(得分:0)

在小组帮助后进行选择吗?

select `band`, count(*) as count
from `songs`
group by `band`
having `band` REGEXP '^[^[:alpha:]]'
order by `band` asc

此外,您似乎正在选择不在group子句中的列。尝试:

select `band`, count(*) as count
from `songs`
where `band` REGEXP '^[^[:alpha:]]'
group by `band`
order by `band` asc