2011-02-02 71 views
1

我想写一个查询,将根据该字段中的第一个字符不是字母的事实来选择行。选择字段,其中字段正则表达式组由

例子,可以说我在表中的下列数据:

id | band | song 
1 | 3 days grace | song name 
2 | avenged sevenfold | song name 
3 | as i lay dying | song name 
4 | 98 mute | song name 
5 | 98 mute | another song name 

我需要这个选择:

3 days grace (and show a count of 1) 
98 mute (and show a count of 2) 

这里是我的代码:

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

这根本不工作。

+1

您的语法是正确的,查询必须工作。什么是MySQL的版本?向我们展示您请的结果... – 2011-02-02 17:00:32

回答

0

我已经在我的数据库中试过了你的查询,它工作得很好,所以问题不在于REGEXP,而在于别的。标题和文章是我的数据库中的列。有趣的是,如果COUNT没有将计数封装在``中,它是如何工作的。

mysql> select Title, count(*) as count 
    -> from `Articles` 
    -> where `Title` REGEXP '^[^[:alpha:]]' 
    -> group by `Title` 
    -> order by `Title` asc; 

+--------------+-------+ 
| Title  | count | 
+--------------+-------+ 
| 3 days grace |  1 | 
| 98 mute  |  2 | 
+--------------+-------+ 
+0

你是对的,它在实际的行值本身是错误的。我改变它使用乐队slug字段,它的工作原理。 – scarhand 2011-02-02 20:53:44

0

尝试在查询的第一部分封装字段名Titlecount。虽然它似乎适用于stephanie gratzer,但对于您的配置来说,您的字段名称可能是SQL关键字,但可能会出现问题。封装它/可能/解决这个(潜在)问题。