[解決済み] このクエリを使用してページング(スキップ/テイク)機能を実装する
2022-04-23 09:26:07
質問
SQLでカスタムページングを実装する方法について、少し理解しようと思っています。 このような記事 .
私は以下のクエリを持っており、これは完全に動作します。しかし、私はこれでページングを実装したいと思います。
SELECT TOP x PostId FROM ( SELECT PostId, MAX (Datemade) as LastDate
from dbForumEntry
group by PostId ) SubQueryAlias
order by LastDate desc
私が欲しいものは何ですか?
フォーラムの投稿に、関連するエントリーがあります。最近議論された記事を選択できるように、最新のエントリーが追加された記事を取得したいのですが。
さて、quot;トップ10"ではなく、quot;トップ10〜20の最近アクティブな投稿を取得できるようにしたいのですが。
試してみたこと
記事にあるようなROW関数を実装しようとしたのですが、本当にうまくいきません。
どのように実装したらよいか、何かアイデアはありますか?
どのように解決するのですか?
で SQL Server 2012 とても簡単です。
SELECT col1, col2, ...
FROM ...
WHERE ...
ORDER BY -- this is a MUST there must be ORDER BY statement
-- the paging comes here
OFFSET 10 ROWS -- skip 10 rows
FETCH NEXT 10 ROWS ONLY; -- take 10 rows
ORDER BY を省略したい場合は、次のようにします。
SELECT col1, col2, ...
...
ORDER BY CURRENT_TIMESTAMP
OFFSET 10 ROWS -- skip 10 rows
FETCH NEXT 10 ROWS ONLY; -- take 10 rows
(私はこれをハックとマークしたいのですが、例えばNHibernateで使用されています。賢くピックアップしたカラムをORDER BYとして使用するのが望ましい方法です)
という質問にお答えします。
--SQL SERVER 2012
SELECT PostId FROM
( SELECT PostId, MAX (Datemade) as LastDate
from dbForumEntry
group by PostId
) SubQueryAlias
order by LastDate desc
OFFSET 10 ROWS -- skip 10 rows
FETCH NEXT 10 ROWS ONLY; -- take 10 rows
新キーワード
offset
と
fetch next
(を導入した(ちょうどSQLの標準に従っている)。
しかし、私は、あなたが SQL Server 2012 ということですね。 ? 以前のバージョンでは、少し(少し)難しいです。ここでは、すべてのSQLサーバーのバージョンについて、比較と例を示します。 こちら
で動作する可能性があるわけです。 SQL Server 2008 :
-- SQL SERVER 2008
DECLARE @Start INT
DECLARE @End INT
SELECT @Start = 10,@End = 20;
;WITH PostCTE AS
( SELECT PostId, MAX (Datemade) as LastDate
,ROW_NUMBER() OVER (ORDER BY PostId) AS RowNumber
from dbForumEntry
group by PostId
)
SELECT PostId, LastDate
FROM PostCTE
WHERE RowNumber > @Start AND RowNumber <= @End
ORDER BY PostId
関連
-
SQL-初心者のためのベスト入門SQLクエリ I
-
[解決済み] 指定されたスキーマにテーブルが存在するかどうかを確認する方法
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] 最初の行への結合方法
-
[解決済み] SQL Server の VARCHAR/NVARCHAR 文字列に改行を挿入する方法
-
[解決済み] mysqldumpで特定のテーブルをスキップする
-
[解決済み】SQL Server SELECT INTO @variable?
-
[解決済み] オラクルによるページング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
org.postgresql.util.PSQLException: ERROR: リレーション "userinfo" の列 "loginid" が存在しません。
-
[解決済み] SQL ServerでLIMITを実装するには?重複
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] MySQLでFULL OUTER JOINを行うにはどうすればよいですか?
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] SQLでランダムな行を要求する方法は?
-
[解決済み] Count()で条件を指定することは可能ですか?
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する