代码改变生活

【mysql】语句优化

论坛上看到有个类似的分割查看查询结果的梗 一时手痒就出手 治一治

 

比如有 A B 表
A 表
ID,NAME
1,A
2,B
3,C

B 表
FK_ID,TYPE,VALUE
1,socer,100
1,socker,90
2,socker,20

求这样的结果
A.ID,A.NAME,A.SOCKER
1,A,'100,90'
2,B,'20'


也就是 SELECT 的时候做了一个字段 SOCKER 把 B 表的列值做了一行,用","符号分割。求 SQL 语句 感谢

 

手写 建表
create table A
(
   ID             int(10) not null auto_increment,
   NAME           varchar(20),
   primary key (ID)
);

create table B
(
   FK_ID             int(10) not null auto_increment,
   TYPE           varchar(10),
  VALUE      
varchar(10)
 );

 

 

实现sql如下①

SELECT  A.ID ,
        A.NAME ,
        group_concat(b.VALUE) AS SOCKER
FROM    A
        INNER JOIN B ON A.ID = b.FK_ID
GROUP BY A.ID ,
        A.NAME

实现sql如下② 支持输出结果写进硬盘路径

SELECT  A.ID     AS  'A.ID' ,
        A.NAME  AS   'A.NAME'  ,
GROUP_CONCAT(B.VALUE) AS  'A.SOCKER' FROM    A,B WHERE A.ID = B.FK_ID GROUP BY A.ID , A.NAME
INTO OUTFILE "D:/NEWS.SQL";

 

posted on 2016-08-16 18:48  张大少。  阅读(210)  评论(0编辑  收藏  举报

导航

繁星纵变 智慧永恒