Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Recent Comments
													
											
												
												
													Link
													
											
									| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
													Tags
													
											
												
												- 공모주 청약
- 코드이그나이터
- 오라클
- JavaScript
- java
- SQL
- php
- 주식
- MYSQL
- jquery
- 맥
- 공모주
- 자바
- html
- 7월 공모주 청약 일정
- 공모주 청약 일정
- linux
- IPO
- css
- 리눅스
- 6월 공모주 청약 일정
- codeigniter
- 주식 청약 일정
- Stock ipo
- Stock
- 제이쿼리
- 자바스크립트
- Oracle
- 주식 청약
- Eclipse
													Archives
													
											
												
												- Today
- Total
개발자의 끄적끄적
[Mysql] Select결과를 Update 문에 반영하기 [펌] 본문
728x90
    
    
  반응형
    
    
    
  [Mysql] Select결과를 Update 문에 반영하기 [펌]
1. 일반적인 Update문
일반적인 Update문은 아래와 같은 방식을 아래와 같은 방식이다.
UPDATE 
    [테이블명]
SET
    [필드명 = 새로운 값]
WHERE
    [조건문]
2. Select 결과와 Join
앞서 말한 것 처럼, Mysql과 다른 DB프레임워크의 방식이 다르다.
Mssql 버전
UPDATE 
    [테이블A]
SET
    [테이블A].필드 = [테이블B].필드
FROM
    [테이블A],[테이블B]
WHERE 
    [테이블A].id = [테이블B].id
Mysql 버전
UPDATE
    [테이블A],[Select 질의] B
SET
    [테이블A].필드 = B.필드
WHERE
	[테이블A].id = B.id
오라클 버전
UPDATE
	[테이블A] A
SET 
    A.필드 = [SELECT B.필드 FROM 테이블B B WHERE B.id = ###]
WHERE A.id = ###;
아래는 Mysql에서, 실제 시즌 랭킹의 상위 %별로, 그 점수를 유저의 재화로 UPDATE하고 있는 예제이다.
UPDATE 
	UserMoney as um,
	(SELECT user_id, curr  FROM
		(SELECT
		    id as user_id,
		    @prev := @curr as prev,
		    @curr := point as curr,
		    @rank := IF(@prev > @curr, @rank+@ties, @rank) AS rank,
		    (@rank/@total)*100 as percentrank
		FROM
			(SELECT * FROM UserPoint WHERE season = 3) c,
			(SELECT
					@curr := null,
			        @prev := null,
			        @rank := 0,
			        @ties := 1,
			        @total := count(*) from UserPoint where play_count > 10 and season = 3) b
		ORDER BY
		    point DESC ) a 
		WHERE percentrank >= 0 AND percentrank <= 1) d
SET 
	um.energy = d.curr
	
WHERE um.id = d.user_id;
출처: https://shakddoo.tistory.com/entry/Mysql-Select결과를-Update-문에-반영하기 [겨울팥죽 여름빙수]
반응형
    
    
    
  '개발 > sql' 카테고리의 다른 글
| [MySQL] 서브쿼리 ( subquery ) [펌] (0) | 2020.06.28 | 
|---|---|
| [mysql] SELECT 결과값을 UPDATE하기 (0) | 2020.06.28 | 
| [sql] MySQL Data Truncated 경고 메시지 해결 방법 [펌] (0) | 2020.06.27 | 
| [MySQL] Select한 값으로 Update (0) | 2020.06.26 | 
| [MySQL] MySQL 마이그레이션 [펌] (0) | 2020.06.25 | 
								  Comments
								
							
						
					
                    
                
					
					
					
					
					
					
				