首页 > 其他 > 详细

将一组数据的合并和数据中特殊字符的替换

时间:2020-07-06 20:43:27      阅读:40      评论:0      收藏:0      [点我收藏+]

目标结果返回数据

"filmId":"1",
"filmName":"我不是药神",
"filmLength":"132",
"filmCats":"喜剧,剧情",
"actors":"程勇,曹斌,吕受益,刘思慧",
"imgAddress":"films/238e2dc36beae55a71cabfc14069fe78236351.jpg",
"subAddress":"films/001.jpg,films/002.jpg,films/003.jpg,films/004.jpg,films/005.jpg"

涉及到的表

表一  主要电影信息表 mooc_film_t

技术分享图片

 

 

 表二:次要电影信息表 mooc_film_info_t

技术分享图片

 

 

 表三 :演员表 电影id对应的演员 mooc_film_actor_t

技术分享图片

 

 

 表四 电影id对应的电影类型 mooc_cat_dict_t

技术分享图片

 

 

 第一步,使用表一表二凑出部分数据

 select 
 film.UUID as filmId,
 film.film_name as filmName,
 info.film_length as filmLength,
 film.film_cats as film_cats,
 film.img_address as imgAddress,
 info.film_imgs as subAddress
 from mooc_film_t film LEFT JOIN mooc_film_info_t  info on
 film.UUID = info.film_id

运行结果

技术分享图片

 

 

 第二步 :查询出演员

select * from mooc_film_actor_t

技术分享图片

 

 

 

#将多个字段合成一个
select GROUP_CONCAT(role_name SEPARATOR ‘,‘) from mooc_film_actor_t where film_id = 2

技术分享图片

 则第一步的结果改为

select 
 film.UUID as filmId,
 film.film_name as filmName,
 info.film_length as filmLength,
 film.film_cats as film_cats,
  (select GROUP_CONCAT(role_name SEPARATOR ‘,‘) from mooc_film_actor_t actor 
	where actor.film_id = film.UUID) as actors,
 film.img_address as imgAddress,
 info.film_imgs as subAddress
 from mooc_film_t film LEFT JOIN mooc_film_info_t  info on
 film.UUID = info.film_id

  技术分享图片

 

 第三步将电影类型转换为对应数据

3.1 将#替换为,

select 
REPLACE(TRIM(BOTH # FROM film.film_cats),"#",",")
from mooc_film_t film

 

技术分享图片

 

 

3.2将数字替换为关联表中的数据 mooc_film_t ,mooc_cat_dict_t

#获取到id 所对应的值

select
*
from mooc_cat_dict_t cat
where FIND_IN_SET(cat.UUID,(select REPLACE(TRIM(BOTH # FROM film.film_cats),"#",",")
FROM mooc_film_t film
)
)

 

技术分享图片

 

 把文字合并

#把值连接起来
  select
 GROUP_CONCAT(show_name SEPARATOR ,)
 from mooc_cat_dict_t cat
 where FIND_IN_SET(cat.UUID,(select REPLACE(TRIM(BOTH # FROM film.film_cats),"#",",")
                                                            FROM mooc_film_t film
  )
 )

 

技术分享图片

 

 最终

select 
 film.UUID as filmId,
 film.film_name as filmName,
 info.film_length as filmLength,
  (  select
 GROUP_CONCAT(show_name SEPARATOR ,)
 from mooc_cat_dict_t cat
 where FIND_IN_SET(cat.UUID,(select REPLACE(TRIM(BOTH # FROM film.film_cats),"#",",")
                                                            FROM mooc_film_t film
  )
 )) as filmCats,
  (select GROUP_CONCAT(role_name SEPARATOR ,) from mooc_film_actor_t actor 
    where actor.film_id = film.UUID) as actors,
 film.img_address as imgAddress,
 info.film_imgs as subAddress
 from mooc_film_t film LEFT JOIN mooc_film_info_t  info on
 film.UUID = info.film_id

 

技术分享图片

 

将一组数据的合并和数据中特殊字符的替换

原文:https://www.cnblogs.com/ghwq/p/13256675.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!