문제

다음 쿼리가 있습니다.

select      count(L.ID)
from        LA inner join L on (LA.leadid = L.ID)
where       L.status = 5
and         L.city = "cityname"
and         Date(LA.Datetime) < Date_Sub(Now(), INTERVAL 6 MONTH);

특정 도시에서 6 개월 이상 (LA에 저장된 날짜)에서 상태 5가있는 기록을 찾습니다. 이것은 약 4K 결과를 반환합니다. 해당 각 레코드에서 상태 값을 1로 업데이트하고 싶습니다. 따라서 내 업데이트는 다음과 같습니다.

update      L, LA
set         L.status = 1
where       L.status = 5 
and         L.city = "cityname" 
and         Date(LA.SomeDatetime) < Date_Sub(Now(), INTERVAL 6 MONTH);

그러나 그것은 멈추고 DB를 잠그고 있습니다. 가입이 없기 때문에 문제가 있다고 생각하지만 다음과 같은 것을 시도합니다.

update      L, LA
from        L inner join LA on (L.OID = LA.leadid)
set         L.status = 1
where       L.status = 5 
and         L.syscity = "cityname" 
and         Date(LA.SomeDatetime) < Date_Sub(Now(), INTERVAL 6 MONTH);

그리고 업데이트에 'From'이 없기 때문에 분명히 작동하지 않습니다.

편집> MySQL을 사용하고 있습니다

도움이 되었습니까?

해결책

update      L
set         L.status = 1
where       L.status = 5 
and         L.city = "cityname" 
and         EXISTS (
  select * from LA 
  where Date(LA.SomeDatetime) < Date_Sub(Now(), INTERVAL 6 MONTH)
  and LA.leadid = L.ID
)

다른 팁

을 위한 MySQL, 오래된 가입 구문을 사용할 수 있습니다.

UPDATE  l, la
SET     l.status = 1
WHERE   l.status = 5
  AND   l.city = "cityname"
  AND   la.leadid = l.id
  AND   DATE(la.datetime) < DATE_SUB(NOW(), INTERVAL 6 MONTH)

나는 이것을 할 것이다 :

update L
set status = 1
from LA
where L.OID = LA.leadid
and L.status = 5
and L.syscity = "cityname"
and Date(LA.SomeDatetime) < Date_Sub(Now(), INTERVAL 6 MONTH)

또한보십시오:

ID 매치를 기준으로 한 테이블에서 다른 테이블로의 SQL 업데이트

SQL Server 2005에서는 다음과 같습니다.

Update L
   set L.status = 1
from
   L
   --
   JOIN LA
      on (LA.leadid = L.id)
where
   L.status = 5
   and L.city = "cityname"
   and Date(LA.Datetime) < Date_Sub(Now(), INTERVAL 6 MONTH);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top