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

MySQLの親子1つのクエリ選択

    mysqlがサポートしていない再帰的結合が必要です。あなたができる唯一のことは深さの最大レベルを決定することです(あなたがp-> cを持っているのであなたの場合それは1です)そしてこれであなたは必要な結合の数を決定することができます:

    最大レベルの深さ=自己結合の数

    SELECT
        p.id as parent_id,
        p.name as parent_id,
        c1.id as child_id,
        c1.name as child_name
    FROM 
        my_table p
    LEFT JOIN my_table c1
        ON c1.parent = p.id
    WHERE
        p.parent=0
    

    たとえば、深度の最大レベルが3の場合、3つの自己結合が必要になります。

    SELECT
        p.id as parent_id,
        p.name as parent_id,
        c1.id as child_id_1,
        c1.name as child_name_1,
        c2.id as child_id_2,
        c2.name as child_name_2,
        c3.id as child_id_3,
        c3.name as child_name_3
    FROM 
        my_table p
    LEFT JOIN my_table c1
        ON c1.parent = p.id
    LEFT JOIN my_table c2
        ON c2.parent = c1.id
    LEFT JOIN my_table c3
        ON c3.parent = c2.id
    WHERE
        p.parent=0
    


    1. SQL Server:両方にWHERE句がある2つのクエリでUNIONを使用するにはどうすればよいですか?

    2. SQuirreLSQLをMicrosoftExcelに接続する

    3. '挿入'関数がMySQLdbを使用して行を追加しないのはなぜですか?

    4. OracleのDECODE関数に相当するMySQL