Set rows value as column name using MySql version 8.0.17

here ya go –

SELECT q400.row_number
     , q400.contents
     , q410.contents
  FROM ( SELECT contents
              , ROW_NUMBER() OVER()  AS rownumber
           FROM `t_contents_s3sv_1_2021` 
          WHERE sUnity = 'Q400'
         ORDER
             BY sID ) AS q400
LEFT OUTER
  JOIN ( SELECT contents
              , ROW_NUMBER() OVER()  AS rownumber
           FROM `t_contents_s3sv_1_2021` 
          WHERE sUnity = 'Q410'
         ORDER
             BY sID ) AS q410             
UNION  /* note UNION removes duplicates!! */
SELECT q410.row_number
     , q400.contents
     , q410.contents
  FROM ( SELECT contents
              , ROW_NUMBER() OVER()  AS rownumber
           FROM `t_contents_s3sv_1_2021` 
          WHERE sUnity = 'Q400'
         ORDER
             BY sID ) AS q400
RIGHT OUTER
  JOIN ( SELECT contents
              , ROW_NUMBER() OVER()  AS rownumber
           FROM `t_contents_s3sv_1_2021` 
          WHERE sUnity = 'Q410'
         ORDER
             BY sID ) AS q410        

caution: untested

please answer this question here in this threadSQL Query to union all table names on a database with MySQL - #7 by benanamen

because i, too, suspect you have a DB design problem

1 Like