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

SQL クエリ:直接番号 1000 の行のデータを取得するにはどうすればよいですか?

    row_number が最良のアプローチですが、1行だけが必要なため、必ず計画を確認してください。目的の行を特定してから、元のテーブルに結合して追加の列を取得する方がよい場合があります。

    WITH T1
         AS (SELECT *,
                    ROW_NUMBER() OVER (ORDER BY number) AS RN
             FROM   master..spt_values)
    SELECT name,
           number,
           type,
           low,
           high,
           status
    FROM   T1
    WHERE  RN = 1000;
    

    与える

    WITH T2
         AS (SELECT number,
                    type,
                    name,
                    ROW_NUMBER() OVER (ORDER BY number) AS RN
             FROM   master..spt_values)
    SELECT TOP 1 C.name,
                 C.number,
                 C.type,
                 C.low,
                 C.high,
                 C.status
    FROM   T2
           CROSS APPLY (SELECT *
                        FROM   master..spt_values v
                        WHERE  v.number = T2.number
                               AND v.type = T2.type
                               AND ( v.name = T2.name
                                      OR ( v.name IS NULL
                                           AND T2.name IS NULL ) )) C
    WHERE  RN = 1000;  
    

    与える



    1. 1 つのテーブルを参照する 1 つのテーブル内の複数の列が値を取得する

    2. Postgresデータ型NUMERICは符号付きの値を保存できますか?

    3. mysql列エイリアスが機能しないため、機能させるには空の連結を作成する必要があります

    4. PostgreSQL(psql)でヌル出力の現在の設定を表示する方法