Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn cha mẹ và con cái trong bảng tự tham chiếu

Nó không thử nghiệm nhưng tôi nghĩ điều này cũng sẽ hoạt động trong MySQL:

ORDER BY CASE WHEN parent_id=-1 THEN id ELSE parent_id END, created_at

Chỉnh sửa: Nếu bạn không thể cho rằng các Id tăng dần theo thứ tự logic giống như các Nhận xét, thì nó sẽ phức tạp hơn một chút:

SELECT parent_id,id,created_at parent_date,null child_date,content
    FROM Comments
    WHERE parent_id=-1
UNION
SELECT c.parent_id,c.id,p.created_at as parent_date,c.created_at as child_date,c.content
FROM Comments c
    JOIN (SELECT id,created_at,content
            FROM Comments
            WHERE parent_id=-1
            GROUP BY id,created_at,content) p ON p.id=c.parent_id
ORDER BY parent_date,child_date



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng mySQL LỖI 1064

  2. Làm cách nào để so sánh hai cột trong SQL?

  3. Ví dụ DAY () - MySQL

  4. Không thể đặt biến 'sql_mode' thành giá trị của 'REPLACE

  5. Hàm Isset () trả về true ngay cả khi mục không được đặt