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

親レコードの子レコードのすべての列を返そうとしています

    CSVを使用できます IDの結果は次のようになります:

    SELECT *
    FROM tblreport
    WHERE FIND_IN_SET(ID,(SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
                         SELECT @pv:=(SELECT GROUP_CONCAT(ID SEPARATOR ',') 
                         FROM tblreport WHERE ParentID IN (@pv)) AS lv FROM tblreport
                         JOIN (SELECT @pv:=1)tmp
                           WHERE ParentID IN (@pv)) a));
    

    DBFiddleデモ

    出力:

    ID  Name    ParentID
    2   2nd     1
    3   3rd     1
    4   4th     2
    

    編集:

    元の行も必要な場合は、UNION ALLを使用できます。 :

    SET @var = 1;
    
    SELECT *
    FROM tblreport
    WHERE FIND_IN_SET(ID,(SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
                         SELECT @pv:=(SELECT GROUP_CONCAT(ID SEPARATOR ',') 
                         FROM tblreport WHERE ParentID IN (@pv)) AS lv FROM tblreport
                         JOIN (SELECT @pv:[email protected])tmp
                           WHERE ParentID IN (@pv)) a))
    
    UNION ALL
    SELECT *
    FROM tblReport
    WHERE ID = @var
    ORDER BY ID;
    

    DBFiddle Demo2



    1. MyBatisRowBoundsはクエリ結果を制限しません

    2. 収集方法:OracleデータベースのDELETEプロシージャ

    3. WHERE句を使用したMySQLLEFTJOINクエリ

    4. mysqlに保存されているとおりにコンテンツを表示する方法