나는 다음 colomn과 함께 테이블이 있습니다
ID 태그 값
표의 값은 다음과 같습니다.
1 ac.id 12345
1 ac.title xyz
2 ac.id 12345
2. ac.title Yo its the title
여기에서 동일한 태그를 가진 두 개의 다른 ID 값을 비교하고 값이 다른 경우 더 작은 ID를 업데이트하고 싶습니다.
예를 들면
ac.title의 값은 id 2와 1에서 다르므로 1의 값을 2로 업데이트하겠습니다.
미리 감사드립니다
대답은 여전히 조인을 사용하는 것이지만 다음과 같습니다.
update test t1
left join test t2
on t1.id < t2.id
and t1.name = t2.name
set t1.value = t2.value
where t2.id is not null;
태그는 같지만 ID가 다른 행이 여러 개있는 경우 두 번 이상 실행해야 할 수 있습니다. 그게 중요한 문제라면 댓글 만 달면 다른 쿼리가 나올 것입니다. 이것은 빠르고 쉬운 해결책입니다.
편집하다
그리고 여기에 약간 더 복잡하지만 더 효과적인 해결책이 있습니다. 이렇게하면 ID가 낮은 모든 태그가 MAX ID가있는 태그의 값으로 업데이트됩니다.
update test t1
inner join
(
select q1.*, t2.value from
(
select max(id) id, name
from test
group by name
) q1
inner join test t2
on q1.id = t2.id
and q1.name = t2.name
) m
on t1.name = m.name
and t1.id < m.id
set t1.value = m.value
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다