데이터베이스 관리에서 연속된 숫자의 시퀀스를 만드는 것은 다양한 작업에 매우 유용할 수 있습니다. MySQL은 외부 스크립팅 언어를 사용하지 않고도 이러한 범위를 생성하는 효율적인 방법을 제공합니다.
이는 아래와 같이 컬렉션 기반 접근 방식을 통해 달성할 수 있습니다. 이 방법은 루프 오버헤드 없이 많은 수의 값을 생성하는 데 특히 유용합니다.
다음은 0에서 999까지의 숫자 범위를 생성하는 쿼리 예시입니다.
<code class="language-sql">INSERT INTO myTable (nr) SELECT SEQ.SeqValue FROM ( SELECT (HUNDREDS.SeqValue + TENS.SeqValue + ONES.SeqValue) SeqValue FROM ( SELECT 0 SeqValue UNION ALL SELECT 1 SeqValue UNION ALL SELECT 2 SeqValue UNION ALL SELECT 3 SeqValue UNION ALL SELECT 4 SeqValue UNION ALL SELECT 5 SeqValue UNION ALL SELECT 6 SeqValue UNION ALL SELECT 7 SeqValue UNION ALL SELECT 8 SeqValue UNION ALL SELECT 9 SeqValue ) ONES CROSS JOIN ( SELECT 0 SeqValue UNION ALL SELECT 10 SeqValue UNION ALL SELECT 20 SeqValue UNION ALL SELECT 30 SeqValue UNION ALL SELECT 40 SeqValue UNION ALL SELECT 50 SeqValue UNION ALL SELECT 60 SeqValue UNION ALL SELECT 70 SeqValue UNION ALL SELECT 80 SeqValue UNION ALL SELECT 90 SeqValue ) TENS CROSS JOIN ( SELECT 0 SeqValue UNION ALL SELECT 100 SeqValue UNION ALL SELECT 200 SeqValue UNION ALL SELECT 300 SeqValue UNION ALL SELECT 400 SeqValue UNION ALL SELECT 500 SeqValue UNION ALL SELECT 600 SeqValue UNION ALL SELECT 700 SeqValue UNION ALL SELECT 800 SeqValue UNION ALL SELECT 900 SeqValue ) HUNDREDS ) SEQ;</code>
이 쿼리는 UNION ALL
연산자를 사용하여 1자리, 10자리, 100자리의 개별 시퀀스를 결합하여 결합된 숫자 시퀀스를 만듭니다. CROSS JOIN
작업을 사용하면 각 시퀀스의 모든 요소를 결합하여 원활한 숫자 범위를 얻을 수 있습니다.
생성된 시퀀스는 INSERT INTO
문을 사용하여 myTable
테이블에 직접 삽입할 수 있습니다. 이 방법은 테이블을 순차적 데이터로 효율적으로 채워 고유 식별자 또는 기타 필수 숫자 값이 생성되도록 합니다.
위 내용은 MySQL에서 숫자 범위를 효율적으로 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!