2011-04-11 4 views
1

하나의 삽입에 100 개의 행을 추가하고 각 필드에 일련의 숫자 (및 해당 문자열 등가)를 채우고 싶습니다. 즉은 MySQL에서 가능합니다

,이 라인을 따라 뭔가 (myNumber이 VARCHAR가 될 것 myOrder는 int를 것) :

myTable에 (myNumber, myOrder)에 삽입 "0"을 선택 - "99", 1을 선택 100

나는 할 수없는 느낌이 들지만, 내가 물어볼 줄 알았다.

select 0 as num, 1 as order 
union all 
select 1 as num, 2 as order 

을하고 그 결과 세트를 기반으로 삽입 :

답변

2

을 'myTable에'내 행의 하위 집합이 될 수 (루프와 프로 시저를 사용하거나 테이블을 유지하는 것 ... 당신이 가지고있는 한 많은 내용의 테이블을 추가 할 수 있습니다. 내용에 관계가없는 경우에도 ... MySQL 쿼리 변수로 할 수 있습니다.

insert into YourTable (YourSequence, YourStringVersion, field3) 
    (SELECT 
      @seq:= @seq+1 YourSequence, 
      CONVERT(@seq, CHAR(8)) YourStringVersion, 
      "Other Defaults" field3 
     FROM 
      (select @seq := 1) vars, 
      SomeTableWithAtLeast100Records limit 100) JustToAdd 
+0

환상적! 덕분에 대단히, 꿈처럼 작동합니다. –

0

당신 (가) 노동 조합의 집합으로 "1-100, 0-99 선택 선택"작성할 수 있습니다. 그래도 많은 재미는 없습니다. 가장 좋은 방법은 저장된 함수와 커서를 사용하는 것이지만, 한 번에 1 행이됩니다.

0

당신이 해결하려고하는 어떤 문제를 해결책으로 생각하는지 상상할 수 없습니다. 비슷한 질문이 많은 질문을 게시하는 것 같습니다.

코드 솔루션을 찾고 있으므로 아마도이 작업을 많이하고 싶을 것입니다. 짧은 대답은 완전히 새로운 테이블을 생성하지 않고, 심지어 당신은 할 수 있어야 다음

INSERT INTO myTable (mynumber, myorder, another) 
SELECT mynumber, myorder, 'new' 
FROM myTable WHERE another='TEMPLATE'; 
+0

고유 한 비난 ... 내 이전 질문 중 어느 것이 당신에게 이상하게 보입니까? 여기 내 요구에 관해서는, 그들은 꽤 똑바로 전진합니다. 나는 실질적으로 동일한 순차적 요소의 긴 목록을 나타내는 표를 가지고 있습니다 (연속으로 좌석을 상상해보십시오, 예를 들어) 나는 테이블을 채울 필요가있다. 분명히 이것은 스크립트 나 저장 프로 시저를 사용하여 수행 할 수 있지만 직선적 인 SQL로 수행 할 수 있는지 궁금합니다. –

관련 문제