database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 29143 게시물 읽기
No. 29143
쿼리 질문입니다. 이게 가능한지 잘 모르겠네요... ^^;;
작성자
DB초보
작성일
2009-07-13 16:11ⓒ
2009-07-13 16:13ⓜ
조회수
5,554



USER 테이블에 


main_position char(1)

sub_position  char(1)

order  int(4) 이렇게 3개의 필드가 있는데요... 


insert 시킬때 동일한 main_position과 sub_position 이 존재하면 그 카운트를 먹여서 +1 한 값을 order 필드에 입력하고 싶습니다. 


만약 테이블에 

==================================

main_position  sub_position, order 

A                    A                 1 

==================================


요렇게 있고, 새로 입력하는 필드의 값이 main_position = 'A', sub_position='A' 일때 


 

insert into USER (main_position,  sub_position, order) 

   values ('A','A',    select count(*) as count from USER where main_position = 'A' AND sub_position = 'A'  한 count값의 + 1


요렇게 하고 싶은데 어떻게 해야할까요?? 같은 테이블에서는 이게 불가능 할것 같기도 하고, 

제가 쿼리를 못짜는건지 원래 안되는건지 자꾸 에러만 나네요....


order 값의 MAX + 1 을 입력하는것은 안됩니다. 데이터가 삭제 될수도 있거든요...

(order값이 1,2,3,4,5 이었다가 3이 빠져버리면 다음 order값이 5가 되어야 하는데 6이 되어버리는 현상..)



만약 불가능 하다면 먼저 count 값을 뽑아낸후에 insert 시 +1 해서 넣는방법밖에 없을까요???

이 글에 대한 댓글이 총 1건 있습니다.

저는 아래와 같이 했더니 일단은 됩니다.
최적화 여부는 잘 모르겠습니다.

사용 버전은 5.0.32 입니다.

mysql> truncate test_a;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test_a select 'a','a', count(*)+1 from test_a where m_p='a' and s_p='a';
Query OK, 1 row affected (0.06 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> insert into test_a select 'a','a', count(*)+1 from test_a where m_p='a' and s_p='a';
Query OK, 1 row affected (0.06 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> insert into test_a select 'a','a', count(*)+1 from test_a where m_p='a' and s_p='a';
Query OK, 1 row affected (0.06 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from test_a;
+------+------+------+
| m_p  | s_p  | o    |
+------+------+------+
| a    | a    |    1 |
| a    | a    |    2 |
| a    | a    |    3 |
+------+------+------+
3 rows in set (0.00 sec)

mysql>

박현우(lqez)님이 2009-07-14 15:48에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29146insert할때 auto increment 되는 현재값을 구하는 방법 질문입니다.. 꼭 봐주세요 [2]
...
2009-07-14
6685
29145정렬하기 문제 [1]
조항철
2009-07-14
5369
29144질문드리겠습니다. [1]
질문
2009-07-14
6733
29143쿼리 질문입니다. 이게 가능한지 잘 모르겠네요... ^^;; [1]
DB초보
2009-07-13
5554
29097서브쿼리 질문 [1]
oldlove7
2009-07-09
5682
29080Load_File 사용시 한글 파일명 입력방법 [1]
신은성
2009-07-08
6587
29014mysql 비정상종료(정전등)시 update 정보가 갱신되지 않아요 [1]
하나명
2009-07-03
5937
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.029초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다