ホームページ > データベース > mysql チュートリアル > SQL SELECT ステートメントのみを使用して最初の N 個の正の整数を取得するにはどうすればよいですか?

SQL SELECT ステートメントのみを使用して最初の N 個の正の整数を取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-19 11:38:09
オリジナル
599 人が閲覧しました

How Can I Retrieve the First N Positive Integers Using Only a SQL SELECT Statement?

SQL SELECT を使用した最初の N 個の正の整数の取得

標準 SQL SELECT ステートメントのみを使用して最初の N 個の正の整数を抽出するという要件が発生することがあります。ただし、事前に設定されたカウント テーブルを使用せずにそのようなリクエストの実現可能性を確認することは非常に重要です。

標準 SQL のアプローチ

標準 SQL の領域では、カウント テーブルを持たない正の整数の連続列は次のようになります。

MySQL 固有のソリューション

MySQL には連続番号を生成するネイティブ関数がありませんが、ダミーの行セットを作成してこの制限を回避できます。さまざまなデータベース管理システムの次の例を考えてみましょう:

  • Oracle:
SELECT  level
FROM    dual
CONNECT BY
        level <= 10
ログイン後にコピー
  • SQLサーバー:
WITH    q AS
        (
        SELECT  1 AS num
        UNION ALL
        SELECT  num + 1
        FROM    q
        WHERE   num < 10
        )
SELECT  *
FROM    q
ログイン後にコピー
  • PostgreSQL:
SELECT  num
FROM    generate_series(1, 10) num
ログイン後にコピー

MySQL の制限事項

残念ながら、MySQL では提供されていません。同等の機能ですが、欠点と見なすこともできます。回避策としては、ユーザー定義のプロシージャを使用して、一時テーブルに必要な数の行を入力し、その後の取得を容易にすることができます。例:

CREATE TABLE filler (
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT
) ENGINE=Memory;

CREATE PROCEDURE prc_filler(cnt INT)
BEGIN
        DECLARE _cnt INT;
        SET _cnt = 1;
        WHILE _cnt <= cnt DO
                INSERT
                INTO    filler
                SELECT  _cnt;
                SET _cnt = _cnt + 1;
        END WHILE;
END
$$

CALL prc_filler(10);
SELECT  * FROM filler;
ログイン後にコピー

以上がSQL SELECT ステートメントのみを使用して最初の N 個の正の整数を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート