한 가지 방법 :
UPDATE user_table u
JOIN (SELECT q.userid
, SUM(1.00) AS deposit
FROM (
-- original OP query goes here
) q
GROUP BY q.userid
) r
ON r.userid = u.userid
SET u.balance = u.balance + r.deposit
우리는 표시되는 결과 집합을 반환 원래 OP 쿼리를 사용하게 그 (
로 Q 위의 쿼리의 별칭) 인라인보기.
이로부터 우리는 고유 한 userid 목록과 userid가 결과 집합에 나타나는 횟수를 쿼리합니다. 그것은 우리에게 사용자 이름과 예금 금액 (사용자 ID가 나타날 때마다 1 달러)을줍니다 (일부 데이터베이스는 소수가 맞는지 확인하기 위해 값을 1.0이 아닌 1로 지정하기를 원할 수 있습니다.) SUM이
사용자 테이블에 인라인보기 (r)를 결합하고 해당 사용자의 현재 잔액에 입금액을 추가합니다 (잔액이 십진수로 저장되었다고 가정하면 1.00 = 1 달러) 시험으로
가하는 SELECT
문에 UPDATE
변환 :
- 는 선택 사항 (에 "
ORDER BY
"절을 추가 "SET
"절
- 을 제거)을 만들 수 결과 확정
- "
UPDATE
"키워드를 제거하고 바꾸십시오.
과 : 선택 전체
SELECT r.userid
, r.deposit
, u.balance AS old_balance
, u.balance + r.deposit AS new_balance
, u.userid
FROM
:
SELECT r.userid
, r.deposit
, u.balance AS old_balance
, u.balance + r.deposit AS new_balance
, u.userid
FROM user_table u
JOIN (SELECT q.userid
, SUM(1.00) AS deposit
FROM (
-- original OP query goes here
) q
GROUP BY q.userid
) r
ON r.userid = u.userid
참고 절, 행이 선택되어 결정 무엇인가 (ON 절에) 조건을 가입 위치에 상관 없다/사용자 테이블에서 영향을받습니다.
userID 및 sum coinsID로 쿼리 결과를 그룹화하십시오. userID의 개수에 대한 열을 추가하십시오. userID의 수를 $ 1로 곱하고 coinsId를 새 값으로 업데이트하십시오. – xQbert
@AliBZ, 예 'balance'는 사용자 테이블의 열 이름입니다. 균형을 업데이트해야하는 곳. –
미안하지만, 나, 그 부분을 놓쳤다. – AliBZ