반응형
MySQL 선택에서 업데이트
거래표에 e.auto="true"가 있는 다음 날짜 "%2017-08-07%"부터 "%2017-08-07%" 사이의 금액을 업데이트하려고 합니다.하지만, mysql이 돌아오고 있습니다.
1064 - SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 매뉴얼에서 1행에서 'FROM user as u JOIN e_tractas e ON e.id = u.ewallet JOIN transacti'에 가까운 구문을 사용하는 올바른 구문을 확인하십시오.
update t set t.amount = (
select t.amount
FROM user as u
JOIN e_wallet as e ON e.id = u.ewallet
JOIN transaction as t on t.user = u.id
where e.auto="true"
and t.create_date like "%2017-08-07%"
)
FROM user as u
JOIN e_wallet as e ON e.id = u.ewallet
JOIN transaction as t on t.user = u.id
where e.auto="true"
and t.create_date BETWEEN "%2017-08-01%" and "%2017-08-07%"
만약 당신이 서브쿼리를 무시한다면, 당신의UPDATE쿼리 모양:
UPDATE t
SET t.amount = ...
FROM user AS u ...
JOIN e_wallet AS e ...
당신은 가질 수 없습니다.FROMa의 조항UPDATE쿼리가 구문 오류의 원인입니다.구문은 다음과 같습니다.
UPDATE tablename AS t1
JOIN tablename2 AS t2 ON ...
JOIN tablename3 AS t3 ON ...
SET ...
WHERE ...
그렇다면 다음과 같습니다.
UPDATE transaction AS t
JOIN user AS u ON u.id = t.user
JOIN e_wallet AS e ON e.id = u.ewallet
SET t.amount = (
select t.amount
FROM user as u
JOIN e_wallet as e ON e.id = u.ewallet
JOIN transaction as t on t.user = u.id
where e.auto="true"
and t.create_date like "%2017-08-07%"
)
WHERE e.auto = "true"
AND t.create_date BETWEEN "2017-08-01" and "2017-08-07"
이렇게 하면 구문 오류가 해결되겠지만, 원하는 대로 될지는 잘 모르겠습니다.하위 쿼리는 기본 쿼리와 상관 관계가 없으므로 기준을 충족하는 모든 트랜잭션의 양을 반환합니다.그러나 하위 쿼리를 표현식으로 사용할 때는 최대 한 행을 반환해야 합니다.당신은 아마도 단지 당신과 함께 하기를 원할 것입니다.transaction다시 한 번 테이블에 앉습니다.
UPDATE transaction AS t
JOIN user AS u ON u.id = t.user
JOIN e_wallet AS e ON e.id = u.ewallet
JOIN transaction AS t1 ON t1.user = t.user
SET t.amount = t1.amount
WHERE e.auto = "true"
AND t.create_date BETWEEN "2017-08-01" and "2017-08-07"
AND t1.create_date LIKE '%2017-08-07%'
언급URL : https://stackoverflow.com/questions/46234053/update-from-select-mysql
반응형
'codememo' 카테고리의 다른 글
| gitlab 개인 저장소에서 npm 모듈 설치 (0) | 2023.09.15 |
|---|---|
| Spring Data JPA Repository에서 save() 후 반환된 인스턴스를 사용하는 이유는 무엇입니까? (0) | 2023.09.10 |
| iframe의 내용에 대해 본문 스타일 재정의 (0) | 2023.09.10 |
| 깊이에 상관없이 XDocument에서 이름별 요소 조회 (0) | 2023.09.10 |
| 명령줄에서 (스크립트가 아닌) PowerShell을 시작하는 방법 (0) | 2023.09.10 |