Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie migriere ich eine MSSQL-CTE-basierte Kategoriebaumabfrage nach MySQL?

Barbara Streisand
Freigeben: 2024-11-20 17:06:18
Original
328 Leute haben es durchsucht

How to Migrate a MSSQL CTE-Based Category Tree Query to MySQL?

Umwandeln einer MSSQL-CTE-Abfrage in MySQL

Common Table Expressions (CTEs) sind ein leistungsstarkes Tool für rekursive Abfragen in Microsoft SQL Server. Allerdings unterstützt MySQL keine CTEs, was eine Herausforderung bei der Konvertierung von CTE-basierten Abfragen in MySQL darstellt.

Im bereitgestellten Beispiel wird eine CTE-Abfrage verwendet, um einen Kategoriebaum von unten nach oben zu erstellen, beginnend mit einem angegebenen Kategorie-ID. Um diese Funktionalität in MySQL zu replizieren, muss eine rekursive gespeicherte Prozedur implementiert werden.

Erstellen einer rekursiven gespeicherten Prozedur

Die folgende gespeicherte MySQL-Prozedur simuliert das Verhalten des MSSQL-CTE :

CREATE PROCEDURE get_category_tree(IN start_category_id INT)
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE id INT;
  DECLARE pid INT;
  DECLARE name VARCHAR(255);

  # Initialize the cursor
  DECLARE cursor_categories CURSOR FOR
    SELECT id, parentid, name
    FROM category
    WHERE id = start_category_id;

  # Open the cursor
  OPEN cursor_categories;

  # Fetch the first row
  FETCH cursor_categories INTO id, pid, name;

  # While there are more rows
  WHILE done = 0 DO
    # Print the current row
    SELECT id, pid, name;

    # If the parent ID is NULL, mark as done
    IF pid IS NULL THEN
      SET done = 1;

    ELSE
      # Move the cursor to the parent row
      SET start_category_id = pid;
      FETCH cursor_categories INTO id, pid, name;
    END IF;
  END WHILE;

  # Close the cursor
  CLOSE cursor_categories;
END PROCEDURE;
Nach dem Login kopieren

Verwendung

Um die gespeicherte Prozedur zu verwenden, rufen Sie sie mit der gewünschten Startkategorie-ID als Argument auf:

CALL get_category_tree(197);
Nach dem Login kopieren

Dadurch wird der Kategoriebaum ab Kategorie 197 gedruckt und die Hierarchie nach oben durchlaufen, bis die Wurzel erreicht ist.

Das obige ist der detaillierte Inhalt vonWie migriere ich eine MSSQL-CTE-basierte Kategoriebaumabfrage nach MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage