[SQL] 업데이트에 참여하기위한 MySQL의 구문
SQL업데이트에 참여하기위한 MySQL의 구문
I는 다음과 같이 두 개의 테이블이
기차
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| TrainID | varchar(11) | NO | PRI | NULL | |
| Capacity | int(11) | NO | | 50 | |
+----------+-------------+------+-----+---------+-------+
전세
+---------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+----------------+
| ReservationID | int(11) | NO | PRI | NULL | auto_increment |
| FirstName | varchar(30) | NO | | NULL | |
| LastName | varchar(30) | NO | | NULL | |
| DDate | date | NO | | NULL | |
| NoSeats | int(2) | NO | | NULL | |
| Route | varchar(11) | NO | | NULL | |
| Train | varchar(11) | NO | | NULL | |
+---------------+-------------+------+-----+---------+----------------+
현재, 나는 예약이 취소되는 경우 기차에 용량을 증가하는 쿼리를 만들려고 해요. 나는 내가 가입 수행 할 필요가 알고 있지만, 나는 확실히 업데이트 문에서 작업을 수행하는 방법에 아니에요. 예를 들어, 나는 특정 예약 ID 주어진과 같이 함께 기차의 용량을 얻을하는 방법을 알고 :
select Capacity
from Train
Join Reservations on Train.TrainID = Reservations.Train
where ReservationID = "15";
그러나 나는이 작업을 수행하는 쿼리를 구성하고 싶습니다 -
Increment Train.Capacity by ReservationTable.NoSeats given a ReservationID
가능하다면, 나는 좌석의 임의의 수에 의해 얼마나 증가에도 알고 싶습니다. 여담으로, 나는 자바 트랜잭션 증가를 수행 한 후 예약을 삭제에 계획입니다. 삭제 효과 트랜잭션을 것인가?
도와 주셔서 감사합니다!
해결법
-
==============================
1.MySQL은 같은 약 보일 것이다 멀티 테이블 UPDATE 구문을 지원합니다 :
MySQL은 같은 약 보일 것이다 멀티 테이블 UPDATE 구문을 지원합니다 :
UPDATE Reservations r JOIN Train t ON (r.Train = t.TrainID) SET t.Capacity = t.Capacity + r.NoSeats WHERE r.ReservationID = ?;
당신은 기차 테이블을 업데이트하고 동일한 트랜잭션에서 예약 테이블에서 삭제할 수 있습니다. 만큼 당신이 먼저 다음 업데이트를 수행 삭제 번째처럼, 그것은 작동합니다.
-
==============================
2.여기에 업데이트되는 값을 결정하는 조인이 포함 된 UPDATE 문의 또 다른 예입니다. payee_id가 0 인 경우이 경우, 나는, 관련 계좌 결제 ID로 transactions.payee_id을 업데이트 할 (할당되지 않았다).
여기에 업데이트되는 값을 결정하는 조인이 포함 된 UPDATE 문의 또 다른 예입니다. payee_id가 0 인 경우이 경우, 나는, 관련 계좌 결제 ID로 transactions.payee_id을 업데이트 할 (할당되지 않았다).
UPDATE transactions t JOIN account a ON a.id = t.account_id JOIN account ap ON ap.id = a.pmt_act_id SET t.payee_id = a.pmt_act_id WHERE t.payee_id = 0
from https://stackoverflow.com/questions/2114534/mysql-syntax-for-join-update by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 왜 관계 설정 기반의 쿼리는 커서보다는 더 낫다? (0) | 2020.04.10 |
---|---|
[SQL] T-SQL은 구분에 따라 문자열을 분할 (0) | 2020.04.10 |
[SQL] LIKE 및 IN 조건 매개 변수화 된 쿼리 (0) | 2020.04.10 |
[SQL] SQLite는 - ORDER BY RAND () (0) | 2020.04.10 |
[SQL] 행의 예기치 않은 수의 영향을 저장 갱신, 삽입 또는 삭제 문 (0)에 대한 솔루션 (0) | 2020.04.10 |