Php 在sql查询中将concat值作为名称与其他行分开分组

Php 在sql查询中将concat值作为名称与其他行分开分组,php,mysql,sql,Php,Mysql,Sql,在这个查询中,我得到如下表结构 SELECT GROUP_CONCAT(`flim_category_name` SEPARATOR '*') `flim_category_name`,country, GROUP_CONCAT(`flim_video` SEPARATOR '*') flim_video, GROUP_CONCAT(`flim_video_images` SEPARATOR '*') flim_video_images FROM flim_management_t

在这个查询中,我得到如下表结构

 SELECT GROUP_CONCAT(`flim_category_name` SEPARATOR '*') 
`flim_category_name`,country, GROUP_CONCAT(`flim_video` SEPARATOR '*') flim_video,
  GROUP_CONCAT(`flim_video_images` SEPARATOR '*') flim_video_images FROM 
  flim_management_table GROUP BY `country` limit 0,1
flim_category_name    country     flim_video                                       flim_video_images
Guru*Mersal*Aadi      India    ww.com,ww.com,ww.com* ww.com,ww.com,ww.com* ,,,     217953157.jpg,,,,,,,,,*,,,,,,,,,
我需要用start分隔符,而不是像这样分隔行

 SELECT GROUP_CONCAT(`flim_category_name` SEPARATOR '*') 
`flim_category_name`,country, GROUP_CONCAT(`flim_video` SEPARATOR '*') flim_video,
  GROUP_CONCAT(`flim_video_images` SEPARATOR '*') flim_video_images FROM 
  flim_management_table GROUP BY `country` limit 0,1
flim_category_name    country     flim_video                                       flim_video_images
Guru*Mersal*Aadi      India    ww.com,ww.com,ww.com* ww.com,ww.com,ww.com* ,,,     217953157.jpg,,,,,,,,,*,,,,,,,,,
我需要这样构造表。

您可以使用Mysql的函数:

flim1 flim2   flim3    country     flim_video1             flim_video2        flim_video3   images1        image2     image 3
Guru  Mersal   Aadi      India    ww.com,ww.com,ww.com  ww.com,ww.com,ww.com       ,,,    217953157.jpg,,,  ,,,,,     ,,,,,
从表group by Country中选择group_concat(电影类别名称)、国家、group_concat(电影图像)、group_concat(电影url)
对于oracle,请检查以下内容:

在oracle中,我能想到的最好的方法就是这个

select group_concat(Film_category_name), Country, group_concat(flim_images),group_concat(flim_url) from table group by country 输出如下所示:

 WITH f AS
(
       SELECT 'Ghajini'             film_category_name ,
              'INDIA'               country ,
              'IMG1.jpg,iMAGE2.JPG' flim_images,
              'WW.COM,WW.COM,WW.COM' flim_url 
       FROM   dual
       UNION ALL
       SELECT 'dIWALE'              film_category_name ,
              'INDIA'               country ,
              'IMG1.jpg,iMAGE2.JPG' flim_images,
              'WW.COM,WW.COM'       flim_url
       FROM   dual
       UNION ALL
       SELECT 'gURU'                film_category_name ,
              'SOUTH AFRICA'        country,
              'IMG1.jpg,iMAGE2.JPG' flim_images,
              'WW.COM,WW.COM'       flim_url
       FROM   dual ), f2 AS
(
         SELECT   f.* ,
                  Row_number() over (PARTITION BY country ORDER BY ROWNUM ) rn
         FROM     f ), f3 AS
(
         SELECT   Listagg(film_category_name,',') within GROUP ( ORDER BY ROWNUM ) over ( PARTITION BY country ) film_category_name ,
                  country ,
                  flim_images,
                  flim_url,
                  rn
         FROM     f2 )
SELECT *
FROM   f3 pivot ( max(flim_images) AS flim_images_row  ,
                  max(flim_url)    AS flim_url FOR rn IN (1,2) ) p
ORDER BY film_category_name;

如果您不知道每个
国家/地区的行数,那么您唯一的选择就是使用动态SQL动态生成和执行查询。但是,我不建议这样做,因为表的结构和设计对于任何数据提取都是低效的。您需要重新构造组件,并在需要存储和检索有用数据的地方创建单独的表。

到目前为止,您尝试了什么….?Mysql和Oracle DBs不同..您使用的是哪一种..?没有答案。我们怎么知道“连接列”是什么意思?什么专栏?你可以通过mysql的group_concat获得接近你的结果,这是一个糟糕的结构