sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo fusionar datos de varias columnas en una sola? [Consulta de modelo de lista de adyacencia]

Como dijiste, podrías usar un UNION sobre el resultado de su consulta. En el resto de la respuesta, le mostraré una solución usando CTE, que es una sintaxis SQL estándar disponible en muchos sistemas, pero, desafortunadamente, no en MySQL. Sin embargo, para convertir esta consulta a MySQL, puede consultar la siguiente respuesta:¿Cómo se usa la cláusula "WITH" en MySQL?

WITH query AS (
  SELECT t1.categoryid AS lev1, t2.categoryid as lev2, t3.categoryid as lev3, t4.categoryid as lev4
  FROM category AS t1
  LEFT JOIN category AS t2 ON t2.parent = t1.categoryid
  LEFT JOIN category AS t3 ON t3.parent = t2.categoryid
  LEFT JOIN category AS t4 ON t4.parent = t3.categoryid
  WHERE t1.categoryid = 4149418031)
SELECT lev1 AS category_value FROM query
  UNION
SELECT lev2 AS category_value FROM query
  UNION
SELECT lev3 AS category_value FROM query
  UNION
SELECT lev4 AS category_value FROM query;