Đây là một truy vấn ngắn thực hiện những gì bạn đang yêu cầu, giả sử bảng của bạn được gọi là foo
và bạn muốn biết gốc của <id>
:
SELECT f.id, f.title
FROM (
SELECT @id AS _id, (SELECT @id := parent_id FROM foo WHERE id = _id)
FROM (SELECT @id := <id>) tmp1
JOIN foo ON @id IS NOT NULL
) tmp2
JOIN foo f ON tmp2._id = f.id
WHERE f.parent_id IS NULL