ホームページ >データベース >mysql チュートリアル >SQL SELECT ステートメントで最初の N 個の正の整数を生成するにはどうすればよいですか?
SQL SELECT を使用した最初の N 個の正の整数の生成
問題:
最初の整数の取得標準 SQL SELECT ステートメントのみを使用して N 個の正の整数を扱うには、課題が生じます。カウント テーブルに依存しない回避策はありますか?
回答:
一般的な SQL にはこの操作のネイティブ メソッドがありませんが、いくつかの主要なデータベース システムでは、ソリューション:
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);
以上がSQL SELECT ステートメントで最初の N 個の正の整数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。