[SQL] SQL 서버 WHILE 루프 2008 삽입
SQLSQL 서버 WHILE 루프 2008 삽입
내가 좋아하는 기록을 기존의 한
ID Hospital ID Email Description
1 15 abc@e.com Sample Description
2 15 def@dd.com Random Text
I는 일정하게 남아있는 (그것은 자동으로 생성되지 ID 같은) 다른 있지만,이 경우, 특정 값 또는 32로 변경 병원 ID와 행을 삽입 while 루프를 사용할 필요가있다.
그것은 다음과 같이한다
ID Hospital ID Email Description
1 15 abc@e.com Sample Description
2 15 def@dd.com Random Text
3 32 abc@e.com Sample Description
4 32 def@dd.com Random Text
지금 위는 ID 및 병원 ID 서로 다른 두 개의 새로운 행이 주목하라. ID가 자동으로 생성됩니다.
나는 같은 업데이트를 할 필요가 여러 개의 테이블이있다. 나는 잠시 동안 루프를 사용하여이 작업을 수행 할 수있는 경우 커서를 사용하지 않습니다.
편집하다 간단한 해결책으로 루프를 허용 대답에서 제공하는 동안 버려진.
해결법
-
==============================
1.해당 ID가 가정 ID 열 :
해당 ID가 가정 ID 열 :
INSERT INTO TheTable(HospitalID, Email, Description) SELECT 32, Email, Description FROM TheTable WHERE HospitalID <> 32
SQL로 루프를 방지하려고합니다. 대신 세트의 조건에서 생각하려고합니다.
-
==============================
2.우선 나는 100 % 당신이 특히 생산에 대부분의 경우 SQL에서 루프를 방지해야한다는 존 손더스 동의 말을하고 싶습니다.
우선 나는 100 % 당신이 특히 생산에 대부분의 경우 SQL에서 루프를 방지해야한다는 존 손더스 동의 말을하고 싶습니다.
그러나 때때로 테스트 목적 백 레코드 테이블을 채우는 한 번 것대로 루프를 사용하여 자신을 기쁘게하는 단지 OK입니다 이럴.
귀하의 경우 예를 들어 당신이 사용했던 수있는 별개의 16 및 100와 메이크업 이메일과 설명 사이에 병원 ID를 가진 레코드 테이블을 채 웁니다
CREATE PROCEDURE populateHospitals AS DECLARE @hid INT; SET @hid=16; WHILE @hid < 100 BEGIN INSERT hospitals ([Hospital ID], Email, Description) VALUES(@hid, 'user' + LTRIM(STR(@hid)) + '@mail.com', 'Sample Description' + LTRIM(STR(@hid))); SET @hid = @hid + 1; END
그리고 결과는 것
ID Hospital ID Email Description ---- ----------- ---------------- --------------------- 1 16 user16@mail.com Sample Description16 2 17 user17@mail.com Sample Description17 ... 84 99 user99@mail.com Sample Description99
from https://stackoverflow.com/questions/15182468/sql-server-2008-insert-with-while-loop by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 데이터 간격으로 그룹 (0) | 2020.07.06 |
---|---|
[SQL] SQL 서버에서 날짜 간격을 병합 (0) | 2020.07.06 |
[SQL] 오라클 리드 및 래그 함수 테라 당량 (0) | 2020.07.06 |
[SQL] 센서 / 읽기 / 경고 데이터베이스 설계에 대한 의견 (0) | 2020.07.06 |
[SQL] 열과 행을 변환하는 방법 (0) | 2020.07.06 |