3

たとえば、100行を含むSQLテーブルから2行目と5行目を取得する方法はありますか?

句を使用したいくつかのソリューションを見ましたが、それらはすべて、句が適用される列が1から始まる線形でWHEREあると想定しています.WHERE

テーブルに値が 1 から始まる列がない場合に、特定の行について SQL Server テーブルにクエリを実行する他の方法はありますか?

PS - select ステートメントの出力をコピーしてテーブルに線形列を追加する、一時テーブルを使用したソリューションを知っています。T-SQLを使用しています

4

4 に答える 4

7

これを試して、

SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY ColumnName ASC) AS rownumber
    FROM TableName
)  as temptablename
WHERE rownumber IN (2,5)
于 2013-09-13T12:24:58.227 に答える
5

SQL サーバーの場合:

; WITH Base AS (
    SELECT *, ROW_NUMBER() OVER (ORDER BY id) RN FROM YourTable
)

SELECT *
    FROM Base WHERE RN IN (2, 5)

idキーまたは順序に置き換える必要がYourTableあるのは、テーブルです。

これは CTE (Common Table Expression) であるため、一時テーブルではありません。これは、クエリとともに展開されるものです。

于 2013-09-13T12:20:31.067 に答える
2

表には 2 行目または 5 行目はありません。

そのクエリで指定した順序によって決定されるように、返される結果セットには 2 番目または 5 番目の結果しかありません。

于 2013-09-13T12:28:53.527 に答える
2

SQL Server 2005 以降を使用している場合は、Row_Number()関数を使用できます。元:

;With CTE as (
    select col1, ..., row_number() over (order by yourOrderingCol) rn
    from yourTable
)
select col1,...
from cte
where rn in (2,5)

が行番号の値を決定することに注意してくださいyourOrderingCol(ie rn)。

于 2013-09-13T12:22:09.833 に答える