MYSQL:GROUP_CONCAT,SUBSTRING_INDEX的妙用(转)
2009-09-30 12:41
337 查看
在一个表ta中数据为:
+----+------+
| id | name |
+----+------+
| 1 | a |
| 1 | b |
| 1 | c |
| 1 | d |
| 2 | a |
| 2 | b |
| 2 | c |
| 3 | d |
+----+------+
从里面取数据要求完成如下效果:
+----+--------+
| id | name |
+----+--------+
| 1 | a,b,c,d |
| 2 | a,b,c |
| 3 | d |
+----+--------+
在MySQL4.1中,加入了GROUP_CONCAT这个函数,我们就可以很轻松的完成这个任务
SQL代码
SELECT
`id`,GROUP_CONCAT(
`
name
`
ORDER
BY
`
name
`
DESC
SEPARATOR
','
)
AS
name
FROM
`ta`
GROUP
BY
`id`
但是如果要取得每个ID的前2个数据时即完成如下效果:
+----+------+
| id | name |
+----+------+
| 1 | a,b |
| 2 | a,b |
| 3 | d |
+----+------+
因为GROUP_CONCAT函数虽然支持ORDER BY但是却不支持LIMIT,这个时候只能用变通的手段了,用SUBSTRING_INDEX函数,这个函数在MySQL手册中的说明是:
SQL代码
SUBSTRING_INDEX(str,delim,
count
)
返回字符串 str 中在第
count
个出现的分隔符 delim 之前的子串。如果
count
是一个正数,返回从最后的(从左边开始计数)分隔符到左边所有字符。如果
count
是负数,返回从最后的(从右边开始计数)分隔符到右边所有字符:
在上面一个例子中,我们使用“,”来分隔数据,取前面2个,就可以这样写:
SQL代码
SELECT
`id`,SUBSTRING_INDEX(
SELECT
`id`,GROUP_CONCAT(
`
name
`
ORDER
BY
`
name
`
DESC
SEPARATOR
','
),
','
,2)
AS
`
name
`
FROM
`ta`
GROUP
BY
`id`
+----+------+
| id | name |
+----+------+
| 1 | a |
| 1 | b |
| 1 | c |
| 1 | d |
| 2 | a |
| 2 | b |
| 2 | c |
| 3 | d |
+----+------+
从里面取数据要求完成如下效果:
+----+--------+
| id | name |
+----+--------+
| 1 | a,b,c,d |
| 2 | a,b,c |
| 3 | d |
+----+--------+
在MySQL4.1中,加入了GROUP_CONCAT这个函数,我们就可以很轻松的完成这个任务
SQL代码
SELECT
`id`,GROUP_CONCAT(
`
name
`
ORDER
BY
`
name
`
DESC
SEPARATOR
','
)
AS
name
FROM
`ta`
GROUP
BY
`id`
但是如果要取得每个ID的前2个数据时即完成如下效果:
+----+------+
| id | name |
+----+------+
| 1 | a,b |
| 2 | a,b |
| 3 | d |
+----+------+
因为GROUP_CONCAT函数虽然支持ORDER BY但是却不支持LIMIT,这个时候只能用变通的手段了,用SUBSTRING_INDEX函数,这个函数在MySQL手册中的说明是:
SQL代码
SUBSTRING_INDEX(str,delim,
count
)
返回字符串 str 中在第
count
个出现的分隔符 delim 之前的子串。如果
count
是一个正数,返回从最后的(从左边开始计数)分隔符到左边所有字符。如果
count
是负数,返回从最后的(从右边开始计数)分隔符到右边所有字符:
在上面一个例子中,我们使用“,”来分隔数据,取前面2个,就可以这样写:
SQL代码
SELECT
`id`,SUBSTRING_INDEX(
SELECT
`id`,GROUP_CONCAT(
`
name
`
ORDER
BY
`
name
`
DESC
SEPARATOR
','
),
','
,2)
AS
`
name
`
FROM
`ta`
GROUP
BY
`id`
相关文章推荐
- MYSQL:GROUP_CONCAT,SUBSTRING_INDEX的妙用
- mysql GROUP_CONCAT+ GROUP BY + substring_index获取分组的前几名
- mysql的 函数 group_concat , substring_index 的使用以及 分库分表操作
- mysql处理字符串的两个绝招:substring_index,concat
- mysql处理字符串的两个绝招:substring_index,concat
- mysql处理字符串的两个绝招:substring_index,concat
- mysql处理字符串的两个绝招:substring_index,concat
- mysql处理字符串的两个绝招:substring_index,concat
- mysql 常用的函数方法concat,substr,substring,substring_index,left,right
- mysql处理字符串的两个绝招:substring_index,concat
- mysql处理字符串的两个绝招:substring_index,concat
- mysql处理字符串的两个绝招:substring_index,concat
- mysql处理字符串的两个绝招:substring_index,concat
- mysql处理字符串的两个绝招:substring_index,concat最近老是碰到要处理数据
- mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格
- mysql group_concat()
- MYSQL 字符串拼接:CONCAT, CONCAT_WS, GROUP_CONCAT
- Mysql SUBSTRING_INDEX起split函数作用
- MySQL中group_concat函数深入理解
- mysql group_concat列转行