목록(목록페이지)에 표기된 순번으로 키 값 역추적해서 해당 데이터 수정하는 프로그램 만드는중인데
그걸 엑셀에서 불러와서 일괄로 처리하고있음
근데 내가 작성한게 마음에 들지 않아서 한번 질문해봄
tbl_target
COLUMN | TYPE |
KEY_NO | INT(10) |
CONTENT | VARCHAR(100) |
UPDATE tbl_target
SET CONTENT = 'change content'
WHERE
KEY_NO = (
SELECT T.KEY_NO
FROM (
SELECT KEY_NO, @rownum:=@rownum:+1 AS VIEW_NO
FROM tbl_target, (SELECT @rownum:=0)
ORDER BY KEY_NO DESC
) T
WHERE T.VIEW_NO = #{목록에서 보이는 순번}
)
지금 집이라서 잘 기억은 안나는데 대충 저렇게 작성한것같음
대강 요약하면 어차피 목록 페이지에 있는 행들은 키값의 내림차순이니까
키값 내림차순으로 서브쿼리 받아서 각 행마다 순번때리고
목록 페이지에서 봤던 순번을 비교해서 같은 순번이면 키값 찾아서 수정하는 방식인데
혹시 다른 방식 있음?
해당 댓글은 삭제되었습니다.
아 제발 좀 알려주세염
updatable join view.
인덱스 어떻게 걸려 있는지는 모르겠지만... 실행계획 직접 보고 cost 비교해서 판단하길. 인덱스나 제약 걸려있으면 그거 임시로 풀고 업데이트친다음 다시 설정해주는 경우는, 그렇게 하지 않는 것보다 성능이 상당히 빠름. 뭐가 마음에 안드는지 방향이 없어서 대충 쌌음
https://tnsgud.tistory.com/110
참고
@어쩌구저쩌구:= 이게 뭐하는거노? 로우넘이니까 오라클인가? 크로스조인은.왜한거노 이기?