SELECT TOP N 問題_PHP チュートリアルについて話し合う

WBOY
リリース: 2016-07-13 17:01:08
オリジナル
765 人が閲覧しました

みなさん、こんにちは:
この投稿では SELECT TOP N の問題について説明します。
私は現在コンピューター会社でパートタイムで働いており、ASP アプリケーションを開発しています。最近のビジネス プロジェクトでは、次のような要件がありました。ユーザーはクエリを実行するときのみ必要です。 SQL SERVER 7 は、特定の列をフォローします。SQL SERVER 7 は TOP N 操作を非常によくサポートしていますが、DB2 UDB しかないため、システム移植の問題を考慮して、これを他のいくつかの DBMS に実装する方法も検討しました。 7、ORACLE 8i、SQL SERVER 7。この記事では、これら 3 つの DBMS についてのみ説明します。
簡単に言うと、TOP N 問題とは、SELECT では、等価性の問題を考慮して、TOP N レコードのみを選択することです。 1 つは N 個のレコードのみを返すタイプ (M 1)、もう 1 つは N 番目のレコードと同じ値を持つすべてのレコードも含めるタイプ (M 2) です。 もちろん、最も内側のサブクエリも含めることができます。他の句、または TOP N を ORDER BY なしで適用することもできます。そのほうが簡単です。
1. SQL SERVER 7: TOP N (WITH TIES) を使用します
M1:
SELECT TOP N * FROM MYTABLE ORDER BY ORD_COL;
M2:
SELECT TOP N WITH TIES * FROM MYTABLE ORDER BY ORD_COL;
注: SQL SERVER 7 は PERCENT N WITH TIES を提供し、ACCESS は TOP N を提供しますが、意味は M 2 です。
2 ORACLE 8i: ROWNUM<=N
M1 を使用します。
SELECT * FROM
(SELECT * FROM MYTABLE ORDER BY ORD_COL DESC)
WHERE ROWNUM<=N
M2:
SELECT * FROM MYTABLE WHERE ORD_COL>=
(SELECT MIN(ORD_COL) FROM
( SELECT * FROM MYTABLE ORDER BY ORD _COL DESC)
WHERE ROWNUM<=N)
ORDER BY ORD_COL DESC
次の 2 つの間違った使用法に注意してください:
WRONG 1:
SELECT * FROM MYTABLE
WHERE ROWID<=N
ORDER BY ORD_COL DESC;
WRONG 2:( WHERE ROWNUM & LT; = N 順序付けの前)
Select * from mytable
where rownum & lt;
order by order_col desc; 3: db2
* From mytable
order by ord_col DESC
FETCH ONLY
M2:
DB2 では ORDER BY 句を含むサブクエリを FROM にネストすることができないため、見つかりません。
ORACLE の M2 やその他のより良い方法があるかどうかは不明です。DBMS は TOP N 操作をどのように実装するのでしょうか?他の友達を追加してください。



http://www.bkjia.com/PHPjc/631200.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631200.html技術記事みなさん、こんにちは。この記事では SELECT TOP N の問題について説明します。私は現在コンピューター会社でパートタイムで働いており、最近のビジネス プロジェクトで次のような要件がありました。ユーザーはクエリを実行する必要があります。 ..
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート