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 27938 게시물 읽기
No. 27938
multi-row update
작성자
우영제(rolo)
작성일
2008-12-19 02:39
조회수
4,893

create table account (

accnt_no int,

amount int );


1, 100

2, 300

3, 10000


이렇게 들어 있을 때 700을 전체 합에서 빼고 싶습니다.

조건은 작은 값부터 0이 되어야 합니다.


1, 0

2, 0

3, 9600


이렇게 결과가 나오면 되는 거지요.


이걸 update문 하나로 가능할까요? function을 쓰면 될까요?

이 글에 대한 댓글이 총 2건 있습니다.
성능까지는 뭐라 말씀드리기 어렵고...이렇게 할 수는 있겠네요

UPDATE ACCOUNT T
   SET AMOUNT = (SELECT REST
                   FROM (SELECT ACCNT_NO, AMOUNT,
                                @ORDR := @ORDR + 1 ORDR,
                                AMOUNT - LEAST(AMOUNT, @MINUSVAL) REST,
                                @MINUSVAL := @MINUSVAL - LEAST(AMOUNT, @MINUSVAL) MINUSVAL
                           FROM ACCOUNT A, (SELECT @ORDR := 0, @MINUSVAL := 700) B
                          WHERE AMOUNT > 0
                          ORDER BY AMOUNT, ACCNT_NO) X
                   WHERE ACCNT_NO = T.ACCNT_NO)
 WHERE ACCNT_NO
    IN (SELECT ACCNT_NO
          FROM (SELECT ACCNT_NO, AMOUNT,
                       @ORDR := @ORDR + 1 ORDR,
                       AMOUNT - LEAST(AMOUNT, @MINUSVAL) REST,
                       @MINUSVAL := @MINUSVAL - LEAST(AMOUNT, @MINUSVAL) MINUSVAL
                  FROM ACCOUNT A, (SELECT @ORDR := 0, @MINUSVAL := 700) B
                 WHERE AMOUNT > 0
                 ORDER BY AMOUNT, ACCNT_NO) X
         WHERE AMOUNT > REST);
구헌수(madcat)님이 2008-12-20 14:45에 작성한 댓글입니다.

감사합니다.

변수 쓰는 것은 아직 초보라서 한참을 들여다 봐야겠습니다.

우영제(rolo)님이 2008-12-20 19:52에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27941스터디 그룹 결성에 관련하여... [5]
박성원
2008-12-22
4351
27940톰캣6.0 mysql5.0 연동 질문입니다. [1]
펵숟
2008-12-21
4946
27939클러스트드 인덱스에 insert가 이루어질때 궁금한게 있습니다. [3]
박성원
2008-12-19
4302
27938multi-row update [2]
우영제
2008-12-19
4893
27936도와주세요..제발 [2]
박진희
2008-12-18
4741
27934jdk1.3, mysql5.0 연동시 에러문제 좀 봐주세요~ [2]
김재현
2008-12-17
4678
27933MySQL 4.0.26 한글깨짐 문제 [2]
개발자
2008-12-15
6427
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다