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

1つのSQLクエリで任意の再帰深度の祖先IDを取得するにはどうすればよいですか?

    SELECT c.id, b.id, a.id 
    FROM T 
    INNER JOIN T AS c on T.parent_id=c.id 
    INNER JOIN T AS b ON c.parent_id = b.id 
    INNER JOIN T as a ON b.parent_id = a.id
    

    ただし、テーブルの名前がTであると仮定します。 dに3つの親がない場合、おそらく何も得られない場合はどうなるかわからない場合は、これらの場合にLEFT JOINを試して、偉大な親のNULL値を取得する可能性があります。また、a.idの代わりにb.parent_idを選択するだけでよいので、最後のJOINは実際には必要ありませんが、パターンを家に帰すためだけです;)



    1. postgresのすべてのレコードをTitlecase、最初の文字は大文字に変換します

    2. アプリケーションレベルで読み取り専用DB接続を管理する方法

    3. JavaFXテーブルを使用してデータを整理する

    4. SQL ServerのFORMAT()でサポートされている標準の数値形式の文字列