테이블이 세 개 있어요. 테이블 시장에는 모든 항목과 가격이 포함되어 있습니다. 테이블 사용자에는 모든 사용자 및 해당 잔액의 목록이 포함됩니다. 구입 한 테이블에는 판매 된 항목의 ID와 구매자의 ID가 나열됩니다. 사용자가 항목에 지출 한 가격을 빼야합니다. 이 쿼리를 만들 때
`UPDATE market m
JOIN bought b ON m.id=b.id AND m.status="need"
JOIN users u ON u.id=b.buyer
SET m.status="sold", m.date=CURRENT_TIMESTAMP, u.balance = u.balance - m.price`
잔액은 일선 시장 가치에서만 업데이트됩니다. 모든 가격을 어떻게 뺄 수 있습니까?
// ===========
사용자
ID 잔액
1100
// ===========
시장
id 가격
1 1
2 2
3 3
// ===========
샀다
id 구매자
1 1
3 1
이것은 귀하의 쿼리입니다.
UPDATE market m JOIN
bought b
ON m.id = b.id AND m.status = 'need' JOIN
users u
ON u.id=b.buyer
SET m.status = 'returned',
m.date = CURRENT_TIMESTAMP,
u.balance = u.balance - m.price;
여러 행이 일치하면 업데이트를 위해 하나가 임의로 선택됩니다. 업데이트가 누적되지 않습니다. 원하는 것을 얻을 수 있지만 두 개의 업데이트가 필요합니다. 하나에는 집계가 있습니다.
UPDATE users u JOIN
(select b.buyer, sum(price) as sumprice
from market m JOIN
bought b
ON m.id = b.id AND m.status = 'need'
) mb
ON u.id = b.buyer
SET u.balance = u.balance - m.price;
UPDATE market m JOIN
bought b
ON m.id = b.id AND m.status = 'need'
SET m.status = 'returned',
m.date = CURRENT_TIMESTAMP;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다