2013-09-06 2 views
0

메일 링 날짜에는 9/1/2013이라는 단일 값이 있습니다. 또한 2013 년 9 월 1 일의이 단일 메일 날짜로 업데이트해야하는 50 개의 행 기본 키 IDS가 있습니다.하나의 값을 사용하여 여러 행을 업데이트하십시오.

UPDATE myTable 
    SET  MailingDate = CONVERT(DATETIME, '2013-09-01 00:00:00', 102) 
    WHERE  (tblID = 1) OR 
       (tblID = 2) OR 
       (tblID = 3) OR 
       (tblID = 4) OR ETC... 

나는 테이블에 테이블에 대한 몇 가지 질문을 보았다, 그래서 다음 질문은 것 같아요. ID 열과 MailDate 열 및 내부를 사용하여 tempTable을 만들도록 강요 당할 것인가? 업데이트 할 실제 테이블과 조인 할 것인가?

날 수 있도록해야 할 필요 나던이 업데이트를 할 수있는 방법이 있나요 내 WHERE 문 너무 큰 또는 TEMPTABLE 방법을 만들어 온? 어떤 도움이라도 대단히 감사하겠습니다.

편집 : 사람들이 내가 한 대답을 선택하는 이유 더 나은 이해를 가질 수 있도록 그냥이 추가.

사용자가 액세스 양식 데이터 시트에서 행을 선택하여 기본 키를받습니다. 그래서 업데이 트가 어디서나 1 행에서 500 행 (그것은 의심의 여지가 높은지만,하지만 그것을하는 경우 업데이 트가 될 수 있습니다. 내가 임시 테이블을 만드는 걸려있어 보인다). Therfore, 나는 모든 ID의 vba 문자열 콜렉션을 가지고 있는데, 이는 마치 SQL 서버에 보낼 내 SQL 문에 IN을 작성하기 위해 반복해야 할 것처럼 보입니다.

답변

3

당신은 50 개 값 괜찮을 것 IN를 사용할 수 있습니다. 수백 또는 수천 개의 값을 예상하면 임시 테이블과 같은 다른 방법을 찾아야합니다. 다른 쿼리의 결과에서 ID를 따기 경우

UPDATE myTable 
SET  MailingDate = CONVERT(DATETIME, '2013-09-01 00:00:00', 102) 
WHERE  tblID IN (1, 2,3,...) 

, 당신도 IN

에서 하위 쿼리와 함께 전체 목록을 대체 할 수 또는 전화 번호가 순서에있는 경우, 당신은 또한

을 수행 할 수 있습니다
UPDATE myTable 
SET  MailingDate = CONVERT(DATETIME, '2013-09-01 00:00:00', 102) 
WHERE  tblID >= 1 AND tblID <= 50 
2

이 같은 것을 사용할 수 있습니다

UPDATE myTable 
SET  MailingDate = CONVERT(DATETIME, '2013-09-01 00:00:00', 102) 
WHERE  tblID IN 
(Select tblID from myTable WHERE <some condition>) 

은 "들 ome condition "은 어떤 ID를 변경해야 하는지를 나열하는 방법입니다. 당신은 전체 테이블을 업데이트하는 경우 당신은 당신이 조회 할 수 있습니다 ID의 특정 세트를 업데이트하는 경우

1

당신은 단지 식별자를 쿼리,

UPDATE myTable 
SET  MailingDate = CONVERT(DATETIME, '2013-09-01 00:00:00', 102) 

... 모두 함께 where 절을 잊을 수 과에서를 사용합니다.

UPDATE myTable 
SET  MailingDate = CONVERT(DATETIME, '2013-09-01 00:00:00', 102) 
WHERE  ID IN (SELECT ID 
       FROM myTable 
       WHERE <condition>) 
+0

이 거 작업이 아니다. 'ERROR 1093 (HY000) : 테이블 'products'는 테이블에 'products'가 추가 된 것을 의미합니다. 'UPDATE'의 대상 및 데이터의 별도 원본으로 두 번 지정됩니다. – stamster

관련 문제