在MySQL中建構遞迴查詢的方法指南
MySQL 提供多種方法建立遞歸查詢。以下是幾種方法:
對於MySQL 8.0及更高版本,可以使用WITH RECURSIVE
語法:
<code class="language-sql">WITH RECURSIVE cte (id, name, parent_id) AS ( SELECT id, name, parent_id FROM products WHERE parent_id = 19 UNION ALL SELECT p.id, p.name, p.parent_id FROM products p JOIN cte ON p.parent_id = cte.id ) SELECT * FROM cte;</code>
方法一:變數賦值
<code class="language-sql">SELECT id, name, parent_id FROM (SELECT * FROM products ORDER BY parent_id, id) products_sorted, (SELECT @pv := '19') initialisation WHERE FIND_IN_SET(parent_id, @pv) AND LENGTH(@pv := CONCAT(@pv, ',', id));</code>
方法二:路徑樣式識別碼
如果你的層次結構在id列中以路徑的形式表示,可以使用以下查詢:
<code class="language-sql">SELECT * FROM products WHERE id LIKE '19/%';</code>
方法三:自連接
可以使用自連接來實現遞歸:
<code class="language-sql">SELECT * FROM products AS t1 JOIN products AS t2 ON t1.parent_id = t2.id WHERE t1.parent_id = 19;</code>
選擇最符合你的需求和MySQL版本的方法。
以上是如何在 MySQL 中建構遞迴查詢:版本 5.x 和 8 的方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!