Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie füge ich Daten aus mehreren Spalten zu einer zusammen? [Adjazenzlistenmodell-Abfrage]

Wie Sie sagten, könnten Sie eine UNION verwenden über das Ergebnis Ihrer Anfrage. Im Rest der Antwort zeige ich Ihnen eine Lösung mit CTE, einer Standard-SQL-Syntax, die in vielen Systemen verfügbar ist, aber leider nicht in MySQL. Um diese Abfrage jedoch für MySQL zu konvertieren, können Sie sich die folgende Antwort ansehen:Wie verwenden Sie die "WITH"-Klausel in 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;