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

テーブル値関数の順序が間違っています (再帰 CTE の順序を維持します)

    ORDERing を行う正しい方法は、最も外側の選択に ORDER BY 句を追加することです。それ以外は、いつでも変更される可能性のある実装の詳細に依存しています (データベース/テーブルのサイズが大きくなり、より多くの並列処理が発生する可能性がある場合を含む)。

    注文を行うのに便利なものが必要な場合は、WITH に関する MSDN ページ :

    WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS 
    (
        SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel
        FROM dbo.MyEmployees 
        WHERE ManagerID IS NULL
        UNION ALL
        SELECT e.ManagerID, e.EmployeeID, e.Title, EmployeeLevel + 1
        FROM dbo.MyEmployees AS e
            INNER JOIN DirectReports AS d
            ON e.ManagerID = d.EmployeeID 
    )
    

    CTE の EmployeeLevel 列に似たようなものを追加すると、すべてが機能するはずです。



    1. mysqlの読み取り専用テーブル

    2. CURRENT_TIMESTAMPの例– MySQL

    3. OracleのPLSQLレコードとは

    4. getReadableDatabase()のNullPointerException