標準 SQL SELECT ステートメントのみを使用して最初の N 個の正の整数を抽出するという要件が発生することがあります。ただし、事前に設定されたカウント テーブルを使用せずにそのようなリクエストの実現可能性を確認することは非常に重要です。
標準 SQL のアプローチ
標準 SQL の領域では、カウント テーブルを持たない正の整数の連続列は次のようになります。
MySQL 固有のソリューション
MySQL には連続番号を生成するネイティブ関数がありませんが、ダミーの行セットを作成してこの制限を回避できます。さまざまなデータベース管理システムの次の例を考えてみましょう:
SELECT level FROM dual CONNECT BY level <= 10
WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
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 サイトの他の関連記事を参照してください。