[解決済み] SQLデータベースのテーブルでn番目の行を選択する方法は?
2022-03-23 19:54:08
質問
私は、いくつかの(理想的には)データベースに依存しない n の行をデータベーステーブルから取得することができます。また、以下のデータベースのネイティブな機能を使って、どのように実現できるかも興味深いです。
- SQLサーバー
- MySQL
- PostgreSQL
- SQLite
- オラクル
私は現在、SQL Server 2005で以下のようなことを行っていますが、他の方のよりアグノスティックなアプローチを見てみたいと思います。
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
上記SQLのクレジット Firoz Ansariのウェブログ
更新しました。 参照 Troels Arvinの回答 標準SQLに関するものです。 Troelsさん、何か引用できるリンクはありますか?
解決方法は?
標準のオプションの部分でこれを行う方法がありますが、多くのデータベースが独自の方法をサポートしています。
このことや他のことについても書かれているとても良いサイトがあります。 http://troels.arvin.dk/db/rdbms/#select-limit .
基本的にPostgreSQLとMySQLは非標準に対応しています。
SELECT...
LIMIT y OFFSET x
Oracle、DB2、MSSQLは、標準のウィンドウ関数に対応しています。
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber,
columns
FROM tablename
) AS foo
WHERE rownumber <= n
(私はこれらのDBを使うことがないので、上記のリンク先のサイトからコピーしたものです)
更新してください。 PostgreSQL 8.4では、標準のウィンドウ関数がサポートされているので、2番目の例はPostgreSQLでも動作することを期待しています。
更新しました。 SQLiteは2018-09-15のバージョン3.25.0でウィンドウ関数のサポートを追加したため、両フォームともSQLiteで動作するようになりました。
関連
-
MySQLのWhereの使用方法について説明します。
-
[解決済み】MySQLで「すべての派生テーブルは独自のエイリアスを持つ必要があります」というエラーは何ですか?
-
Mysqlの使用中に発生したエラーの一部
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
mysqlのデータ圧縮性能比較 詳細
-
MySQLによる既存テーブルのパーティショニングの実装
-
[解決済み】文字列からuniqueidentifierに変換する際に変換に失敗する - 2つのGUIDの場合
-
群関数解の無効な使用
-
msql クエリでのエラー 'where 節' の不明な列 'yellow fruit'
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] utf8_general_ciとutf8_unicode_ciの違いは何ですか?
-
[解決済み] 2番目に大きな値を見つけるための最も簡単なSQLクエリは何ですか?