H2 UPDATE / SELECT 문을 Oracle로 이식 중이며 진단하는 데 문제가있는 구문 문제가 발생합니다.
내가 3 개 테이블이, Users
, Cars
,와 Trips
. 다음과 같이 보입니다.
SELECT * FROM USERS;
+------------+----+--------+
| USERNAME | ID | CAR_ID |
+------------+----+--------+
| John.Smith | 1 | 5 |
| Abby.Smith | 2 | 6 |
+------------+----+--------+
SELECT * FROM CARS;
+----+--------+-------+
| ID | MAKE | COLOR |
+----+--------+-------+
| 5 | Subaru | Green |
| 6 | Honda | Red |
+----+--------+-------+
SELECT * FROM TRIPS;
+----+------------+---------+
| ID | USERNAME | MILEAGE |
+----+------------+---------+
| 8 | Abby.Smith | 87 |
| 9 | John.Smith | 23 |
+----+------------+---------+
그러나 이제에 새 열을 추가 Trips
하고 사용자 대신 자동차 모델 만 추적 하기로 결정했습니다 . 중간 결과로 USERNAME
컬럼을 삭제하기 전에 다음을 달성하려고합니다.
+----+------------+---------+-----------+
| ID | USERNAME | MILEAGE | CAR_MODEL |
+----+------------+---------+-----------+
| 8 | Abby.Smith | 87 | Honda |
| 9 | John.Smith | 23 | Subaru |
+----+------------+---------+-----------+
그리고 내 (비 기능적) 진술은 다음과 같습니다.
WITH USER_MODELS AS
(SELECT USERNAME, MAKE FROM USERS JOIN CARS ON (USERS.CAR_ID = CARS.ID))
UPDATE TRIPS SET CAR_MODEL =
SELECT MAKE FROM USER_MODELS
WHERE TRIPS.USERNAME = USER_MODELS.USERNAME
그러나 내가받는 구문 오류는 다음과 같습니다.
UPDATE TRIPS SET CAR_MODEL =
*
ERROR at line 3:
ORA-00928: missing SELECT keyword
그것은 나를 루프로 던지고 있습니다. 이 SELECT
명령문은 바로 뒤에 UPDATE
오고, 그 앞에는 WITH
적절한 형식의 SELECT
.
할 수 있지만 하위 쿼리 안에 WITH 절을 넣어야합니다.
UPDATE TRIPS SET CAR_MODEL =
( WITH USER_MODELS AS
(SELECT USERNAME, MAKE FROM USERS JOIN CARS ON (USERS.CAR_ID = CARS.ID))
SELECT MAKE FROM USER_MODELS
WHERE TRIPS.USERNAME = USER_MODELS.USERNAME
);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다