sql >> Databasteknik >  >> RDS >> Mysql

Fråga föräldrar och barn i självrefererande tabell

Det testade inte men jag tror att det här borde fungera i MySQL också:

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

Redigera: Om du inte kan anta att Id:n är stigande i samma logiska ordning som kommentarerna, blir det lite mer komplicerat:

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. Flera kolumner främmande nyckel:Ställ in en kolumn till Null PÅ DELETE istället för alla

  2. Hur man väljer ett dynamiskt tabellnamn

  3. Hantera olästa inlägg i PHP / MySQL

  4. Radmål, del 2:Semijoins