Bảng kết thúc
ancestor_id descendant_id distance
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
2 3 1
Để thêm người dùng 10, do người dùng 3 giới thiệu (Tôi không nghĩ là bạn cần khóa bảng giữa hai phần chèn này):
insert into ancestor_table
select ancestor_id, 10, distance+1
from ancestor_table
where descendant_id=3;
insert into ancestor_table values (10,10,0);
Để tìm tất cả người dùng được giới thiệu bởi người dùng 3.
select descendant_id from ancestor_table where ancestor_id=3;
Để đếm những người dùng đó theo độ sâu:
select distance, count(*) from ancestor_table where ancestor_id=3 group by distance;
Để tìm tổ tiên của người dùng 10.
select ancestor_id, distance from ancestor_table where descendant_id=10;
Hạn chế của phương pháp này là dung lượng lưu trữ mà bảng này sẽ chiếm.