【mysql】语句优化

时间:2022-03-08 07:23:17

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

比如有 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";