ホームページ > データベース > mysql チュートリアル > MySQL には、Oracle の CONNECT BY や PostgreSQL のgenerate_series() のような堅牢な行ジェネレータがありませんか?

MySQL には、Oracle の CONNECT BY や PostgreSQL のgenerate_series() のような堅牢な行ジェネレータがありませんか?

Barbara Streisand
リリース: 2025-01-15 09:42:44
オリジナル
493 人が閲覧しました

Does MySQL Lack a Robust Row Generator Like Oracle's CONNECT BY or PostgreSQL's generate_series()?

MySQL 行ジェネレーター: 限られた代替手段

他のデータベース システムとは異なり、MySQL には、Oracle 構文のような JOIN 操作で任意の数の行を生成する機能がありません。

Oracle の CONNECT BY 句や PostgreSQL のgenerate_series() 関数に匹敵する多用途の行ジェネレータを探す場合、この制限により課題が生じます。ただし、MySQL で行生成をシミュレートするための代替手段がいくつかあります:

  • ネストされた SELECT ステートメント:
<code class="language-sql">WITH RECURSIVE Hier(Row) AS (
  SELECT 1 UNION ALL
  SELECT Row + 1 FROM Hier
  WHERE Row < 10
)
SELECT * FROM Hier;</code>
ログイン後にコピー
  • WHILE ループを使用します:
<code class="language-sql">DECLARE Row INT DEFAULT 0;

WHILE Row < 10 DO
  -- 在这里插入你的逻辑,例如插入到临时表中
  SET Row = Row + 1;
END WHILE;</code>
ログイン後にコピー

これらのメソッドは、指定された数の行を繰り返し生成し、それらを一時テーブルに保存することにより、行生成をシミュレートします。ただし、追加の一時テーブルとクエリ構造が必要になるため、専用の行ジェネレーターよりも効率が低くなります。

したがって、行生成に関する MySQL の制限を理解し、同様の機能を実現する別の方法を検討することが重要です。

以上がMySQL には、Oracle の CONNECT BY や PostgreSQL のgenerate_series() のような堅牢な行ジェネレータがありませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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