Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menghijrahkan Pertanyaan Pokok Kategori Berasaskan MSSQL CTE ke MySQL?

Bagaimana untuk Menghijrahkan Pertanyaan Pokok Kategori Berasaskan MSSQL CTE ke MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-20 17:06:18395semak imbas

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

Menukar Pertanyaan MSSQL CTE kepada MySQL

Ungkapan Jadual Biasa (CTE) ialah alat yang berkuasa untuk pertanyaan rekursif dalam Microsoft SQL Server. Walau bagaimanapun, MySQL tidak menyokong CTE, menimbulkan cabaran apabila menukar pertanyaan berasaskan CTE kepada MySQL.

Dalam contoh yang disediakan, pertanyaan CTE digunakan untuk membina pepohon kategori dari bawah ke atas, bermula daripada yang ditentukan ID kategori. Untuk meniru fungsi ini dalam MySQL, prosedur tersimpan rekursif mesti dilaksanakan.

Mencipta Prosedur Tersimpan Rekursif

Prosedur tersimpan MySQL berikut meniru gelagat 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;

Penggunaan

Untuk menggunakan prosedur tersimpan, panggilnya dengan ID kategori permulaan yang diingini sebagai hujah:

CALL get_category_tree(197);

Ini akan mencetak pokok kategori bermula dari kategori 197, merentasi hierarki sehingga akar dicapai.

Atas ialah kandungan terperinci Bagaimana untuk Menghijrahkan Pertanyaan Pokok Kategori Berasaskan MSSQL CTE ke MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn