> 데이터 베이스 > MySQL 튜토리얼 > SQL SELECT 문을 사용하여 일련의 양의 정수를 어떻게 생성할 수 있습니까?

SQL SELECT 문을 사용하여 일련의 양의 정수를 어떻게 생성할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-12-20 00:04:20
원래의
781명이 탐색했습니다.

How Can I Generate a Series of Positive Integers Using SQL SELECT Statements?

SQL SELECT를 사용하여 양의 정수 생성

첫 번째 N개의 양의 정수로 구성된 결과 집합을 얻어야 하는 필요성은 데이터 조작 작업에서 자주 발생합니다. 그러나 카운트 테이블이 제공되지 않으면 표준 SQL SELECT 문에서 문제가 될 수 있습니다.

표준 SQL 솔루션 시도

초기에는 이러한 항목을 검색하는 것이 가능할 것처럼 보일 수 있습니다. SELECT 문을 사용하여 직접 정수. 그러나 대부분의 주요 SQL 시스템에는 연속된 정수 집합을 생성하는 기본 제공 메커니즘이 부족합니다. 결과적으로 표준 SELECT 문에만 의존하면 원하는 결과를 얻지 못할 수 있습니다.

특정 MySQL 접근 방식

안타깝게도 MySQL은 이와 관련하여 주목할만한 단점을 보여줍니다. Oracle의 "CONNECT BY" 또는 PostgreSQL의 "generate_series"와 같은 기능을 제공하는 다른 시스템과 달리 MySQL에는 이 작업을 위한 명시적인 메커니즘이 부족합니다.

대체 솔루션

MySQL의 이러한 제한 사항을 고려할 수 있습니다. 해결 방법:

  • 더미 테이블 만들기: "id" 열이 있는 임시 테이블(예: "filler")을 만들고 저장 프로시저를 사용하여 필요한 정수로 채웁니다. . 그런 다음 이 테이블에 대해 쿼리를 조인하여 원하는 결과를 얻을 수 있습니다.
  • 재귀 공통 테이블 표현식(CTE) 사용: MySQL에서는 직접 지원되지 않지만 다음을 통해 CTE를 시뮬레이션할 수 있습니다. 임시 테이블을 생성하고 여기에 값을 반복적으로 삽입하여 원하는 시퀀스를 생성합니다.

예제 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 the procedure to fill the table with integers
CALL prc_filler(10);

-- Select the desired number of integers
SELECT id FROM filler LIMIT 5;
로그인 후 복사

이 스크립트는 " id" 열을 삭제하고 처음 10개의 양의 정수로 채웁니다. 그런 다음 SELECT 문을 사용하여 필요에 따라 원하는 수의 정수를 검색할 수 있습니다.

위 내용은 SQL SELECT 문을 사용하여 일련의 양의 정수를 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿