update를 같은 테이블에서 한번에 2번 할수는 없는건가요?? 0 4 157

by 뉴뭉 [SQL Query] [2019.10.07 11:30:56]


원래는 NOTICE라는 컬럼에 1이라는 값이 1개만 있는건데 이 1값을 제가 설정한 BOARD_SEQ값이 있는 로우랑 

바꾸고 싶은데... 잘 모르겠어요..

 

update tb_board set NOTICE=0 where tb_board.BOARD_SEQ > 0;
update tb_board set NOTICE=1 where BOARD_SEQ = 70

그래서 일간 이렇게 전부다 0으로 바꾼다음에 제가 설정한 BOARD_SEQ의 값의 NOTICE컬럼을 1로 바꿔주는 형식으로 했는데

 

이걸 한쿼리로 만들수있을까요?? ㅠㅠ

by jkson [2019.10.07 11:35:15]

update tb_board set NOTICE = CASE WHEN BOARD_SEQ = 70 THEN 1 ELSE 0 END where tb_board.BOARD_SEQ > 0;

 

그런데 board_seq > 0 데이터 모두를 update하기보다는 notice 값이 1개만 있다면 notice 값이 1인 것과 1로 update하려는 board_seq만 데이터를 수정하는 게 좋을 것 같아요.

 

온라인에서 많이 사용하는 쿼리라면 경우에 따라 notice 값에 인덱스 처리를 해야할 수도 있겠고요.

제 생각에는 그냥 각각의 쿼리로 처리하는 것도 나쁘지 않을 것 같습니다.


by 뉴뭉 [2019.10.07 13:00:05]

와! 감사합니다!! 저도 1개씩만 따로 바꾸고싶은데 잘 못짜겠어요.. ㅎㅎ 0인걸을 1로바꿀때 1인 값을 또다시 불러오기가 어려워요... ㅎㅎ 

그래서 일단 이렇게라도 하려구요! ㅎㅎ

감사합니다!!!!


by jkson [2019.10.07 13:56:22]

그냥 따로 쿼리 처리하시라는 말씀입니다.

update tb_board set notice = 0

where notice = 1 --> 다른 좋은 조건 있다면 변경, 이 조건이 유일하고 온라인에서 자주 실행된다면 notice 컬럼에 index고려

update tb_board set notice = 1

where board_seq = 70


by 뉴뭉 [2019.10.08 16:00:46]

넵!! 감사합니다!!!

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입