这篇文章的标题看上去不太对。想用一句话概括这篇文章想表达的内容,太难起了。不管了,我们用一个具体的应用场景来解释一下这句话所要真正表达的SQL查询思想,假如我有如下需求,有数据表如下:
id Name 1 A 1 B 2 C想用一条SQL语句查询得到如下结果:
id Names 1 A,B 2 C以上的需求场景即为本文的主题,有了MySQL的查询数据和需求,那么我们怎么样用一句MYSQL来实现呢,代码如下:
SELECT Id, GROUP_CONCAT(Name SEPARATOR ',') Names FROM some_table GROUP BY id其中GROUP_CONCAT()函数的分隔符可以自定义,根据你的需求适当选择即可,完整的测试用例:
CREATE TABLE `USERS`( `Id` INT(4) NOT NULL, `Name` VARCHAR(30) DEFAULT '' ); INSERT INTO USERS(`Id`,`Name`) VALUES(1,'A'),(1,'B'),(2,'C'); SELECT Id,GROUP_CONCAT(`Name` SEPARATOR ',') NAMES FROM `USERS` GROUP BY Id;如果你的字段字节数据较多,则可以使用如下语句来设置group_concat的最大字节数:
SET group_concat_max_len = 20480000;
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册