게시판쪽을 만지다가, DB INSERT관련 질문드립니다. 이거 짜주시면 정말 고수십니다ㅠㅠ

게시판쪽을 만지다가, DB INSERT관련 질문드립니다. 이거 짜주시면 정말 고수십니다ㅠㅠ

QA

게시판쪽을 만지다가, DB INSERT관련 질문드립니다. 이거 짜주시면 정말 고수십니다ㅠㅠ

본문

안녕하세요 얼마전 워프에서 넘어와서 그누보드로 이것저것 옮길수있는걸 옮기고있는데요

단순 인서트나 업데이트는 나름 쉬워서 기존에 옮길것들 커스터마이징을 잘하고 있었는데

 

이부분에서 막힙니다ㅠㅠ

만약 qa_type이 1이 아닌거중에서, 이전최근 qa_num에서 -1을 하여 인서트를 하려고합니다.

 

qa_id qa_num qa_parent qa_type
4 -3 4 0
5 -4 5 0
6 -4 5 1
7 -1 1 1

 

즉 위에 7번쪽을 보면, qa_type이 1이고 그위도 1이니,

qa_id=5에 값중 qa_num값-1을 하여 인서트를 하려고합니다.

 

즉 그다음인서트값을

 

qa_id값은 바로이전꺼 +1 ==8

qa_num값은 qa_type이 1이 아닌것중 최근값-1 ==-5

qa_parent값은 바로 이전꺼 +1 == 8

qa_type값은 무조건0으로 인서트 == 0

 

즉 그 다음값은

8 , -5, 8, 0 으로 인서트가 되면되는데

 

셀렉트하여 인서트는 할수있겠는데

php처럼 if조건문이 있는것두 아니구 어떤식으로 표현해야할지ㅠㅠ

 

혹시 위를 해결할 간단하게 sql소스를 짜주실수있을까요?ㅠㅠ

 

정말 이거 짜주시는분은, 개발고수, 상위개발자급입니다.

이 질문에 댓글 쓰기 :

답변 1

일단 테이블명을 tmp_test라고 가정하고

 

SET @num:= 0;
SELECT

    a.qa_id,

    if (@num = 0, @num:= a.qa_num,@num := @num -1) nums,

    a.qa_num,

    a.qa_parent,

    a.qa_type 
FROM tmp_test a
ORDER by qa_id desc

 

로 구현하면 

 

확인가능하구요

insert into table

select 하시면

전부 insert 가능합니다.

 

새로 집어넣을 테이블을 tmp_test_copy 라고 하고

 

SET @num:= 0;
INSERT INTO tmp_test_copy
SELECT a.qa_id, if (@num = 0, @num:= a.qa_num,@num := @num -1) nums, a.qa_parent, a.qa_type 
FROM tmp_test a
ORDER by qa_id DESC

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 136
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT