Maison >base de données >tutoriel mysql >MySQL ne dispose-t-il pas d'un générateur de lignes robuste comme CONNECT BY d'Oracle ou generate_series() de PostgreSQL ?

MySQL ne dispose-t-il pas d'un générateur de lignes robuste comme CONNECT BY d'Oracle ou generate_series() de PostgreSQL ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-15 09:42:44455parcourir

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

Générateur de lignes MySQL : alternatives limitées

Contrairement à d'autres systèmes de bases de données, MySQL n'a pas la capacité de générer un nombre arbitraire de lignes pour une opération JOIN comme dans la syntaxe Oracle.

Cette limitation crée des défis lors de la recherche d'un générateur de lignes polyvalent comparable à la clause CONNECT BY d'Oracle ou à la fonction generate_series() de PostgreSQL. Cependant, il existe quelques alternatives pour simuler la génération de lignes dans MySQL :

  • Instruction SELECT imbriquée :
<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>
  • Utiliser la boucle WHILE :
<code class="language-sql">DECLARE Row INT DEFAULT 0;

WHILE Row < 10 DO
  -- 在这里插入你的逻辑,例如插入到临时表中
  SET Row = Row + 1;
END WHILE;</code>

Ces méthodes simulent la génération de lignes en générant de manière itérative un nombre spécifié de lignes et en les stockant dans une table temporaire. Cependant, ils nécessitent des tables temporaires et des structures de requêtes supplémentaires, ce qui les rend moins efficaces que les générateurs de lignes dédiés.

Par conséquent, il est important de comprendre les limites de MySQL en ce qui concerne la génération de lignes et d'explorer d'autres moyens d'obtenir des fonctionnalités similaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn