sql >> データベース >  >> RDS >> Mysql

自己参照テーブルで親と子を照会します

    テストはしませんでしたが、これはMySQLでも機能するはずです:

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

    編集: IDがコメントと同じ論理的な順序で昇順であると想定できない場合は、もう少し複雑になります。

    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. 別のテーブルに存在しないレコードを1つのテーブルから検索します

    2. MySQLのselectステートメントとCASEまたはIFELSEIF?結果を得る方法がわからない

    3. PostgreSQL監査ログのベストプラクティス

    4. PHP5.3magickはgpcを引用します