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

SQLクエリ:テーブルから順序付けられた行をフェッチします

    再帰クエリを使用する(PostgreSQLバージョン8.4以降):

    /* test data:
    CREATE TABLE foo (id, r_id, a_id, p_id) AS
        SELECT  1,9,9,0
        UNION ALL SELECT 2,9,105,108
        UNION ALL SELECT 3,9,102,9
        UNION ALL SELECT 4,9,106,105
        UNION ALL SELECT 5,9,108,102        
    ;
    */
    
    -- the query you need:
    WITH RECURSIVE sub(s_id, s_r_id, s_a_id, s_p_id, row) AS (
        SELECT id, r_id, a_id, p_id, 1 AS row FROM foo WHERE p_id = 0
    UNION ALL
        SELECT id, r_id, a_id, p_id, (row + 1)  FROM foo JOIN sub ON s_a_id = p_id
    )
    SELECT * FROM sub ORDER BY row;
    


    1. MySQLの行を削除するにはクエリを削除します

    2. MySQL:UNIQUE、ただしDEFAULTNULL-テーブルの作成により許可されます。複数のNULLを挿入できます。なんで?

    3. 夏時間を念頭に置いて繰り返し日付を保存する方法

    4. mysqlデータベースの5桁の数字を日付に変換するだけです