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

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

QA

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

답변 1

본문

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

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

 

이부분에서 막힙니다ㅠㅠ

만약 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

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 33
© SIRSOFT
현재 페이지 제일 처음으로