MySQL-여러 수준의 하위 쿼리에서 UPDATE 절의 테이블을 참조하는 방법

조롱

다음 쿼리가 작동하는 데 문제가 있습니다.

/*SET APPROPRIATE DATABASE CONTEXT*/
USE IDMAS_VESSELS;

/*BEGIN UPDATE SCRIPT*/
UPDATE INSPECTION i SET i.WALL_LOSS = 
    CASE WHEN i.STATUS IN('A','R')
         THEN CASE WHEN i.INSPECTION_NO =   (
                                            SELECT INSPECTION_NO 
                                            FROM (SELECT * FROM INSPECTION) AS insp
                                            /*CAN REFER TO TABLE IN UPDATE CLAUSE*/
                                            WHERE EQUIPMENT_ID = i.EQUIPMENT_ID AND CML_ID = i.CML_ID 
                                            ORDER BY INSPECTION_DATE ASC, INSPECTION_NO
                                            LIMIT 1
                                            )
                   THEN i.NOMINAL_WALL_THICKNESS - i.MINIMUM_REMAINING_WALL_THICKNESS
                   ELSE     (
                            SELECT  MINIMUM_REMAINING_WALL_THICKNESS
                            FROM    (
                                    SELECT @rank:=@rank+1 AS DATE_POSITION, INSP.*
                                    FROM    (SELECT * FROM INSPECTION) AS insp
                                    /*CODE FAILS AT THIS LINE*/
                                    /*CAN NOT REFER TO TABLE IN UPDATE CLAUSE*/
                                    WHERE insp.EQUIPMENT_ID = i.EQUIPMENT_ID AND insp.CML_ID = i.CML_ID
                                    ) as DATA_WITH_DATE_POSITIONS
                            WHERE DATE_POSITION = 1
                            ) - i.MINIMUM_REMAINING_WALL_THICKNESS
              END
        ELSE NULL
    END
WHERE i.EQUIPMENT_ID = '%';

실행하면 다음 오류가 발생합니다.

Error Code: 1054. Unknown column 'i.EQUIPMENT_ID' in 'where clause'

MySQL이 여러 하위 쿼리에 포함 된 경우 UPDATE 절의 테이블을 참조 할 수 없다는 결론을 내 렸습니다. 그러나 하나의 하위 쿼리에만 임베드 된 경우이를 참조 할 수 있습니다 (위 코드 내의 참고에서 식별 됨).

그래서 내 질문은 여러 하위 쿼리에 포함 될 때 UPDATE 절의 테이블을 어떻게 참조합니까?

Ashokkumar M. Prajapati

귀하의 코드를 업데이트했습니다. 아래를 참조하십시오. 이제 의도 한대로 작동합니다. 업데이트 형식은 다음 링크를 기반으로합니다 ...

MySQL 오류 1093-FROM 절에서 업데이트 할 대상 테이블을 지정할 수 없습니다.

-- SET REQUIRED VARIABLE DEFAULTS
SET @prev_equip := null;
SET @prev_cml := null;
SET @prev_rwt := null;
SET @cnt := 1;

-- 1. WALL LOSS
UPDATE INSPECTION i 
-- JOIN QUERIES TO MATCH INSPECTION RECORDS WITH ALL DATA TO BE MERGED/UPDATED TO INSPECTION TABLE
LEFT JOIN   (
            -- CREATE VIRTUAL INSPECTION TABLE WITH NEW RANKING AND PREVIOUS MIN RWT COLUMNS
            SELECT  IF(@prev_equip = ORDERED_DATA.EQUIPMENT_ID AND @prev_cml = ORDERED_DATA.CML_ID, @cnt := @cnt + 1, @cnt := 1) AS DATE_POSITION
                    , (@prev_rwt) AS PREVIOUS_MIN_RWT
                    , ORDERED_DATA.*
                    -- RE-EVALUATING VARIABLES BASED ON CURRENT ROW
                    , @prev_equip := ORDERED_DATA.EQUIPMENT_ID
                    , @prev_cml := ORDERED_DATA.CML_ID
                    , @prev_rwt := ORDERED_DATA.MINIMUM_REMAINING_WALL_THICKNESS
            FROM    (
                    -- ORDER DATA BY INSPECTION_DATE
                    SELECT EQUIPMENT_ID, CML_ID, INSPECTION_NO, MINIMUM_REMAINING_WALL_THICKNESS
                    FROM INSPECTION 
                    ORDER BY EQUIPMENT_ID, CML_ID, INSPECTION_DATE ASC, INSPECTION_NO
                    ) ORDERED_DATA
            ) R1 ON i.EQUIPMENT_ID = R1.EQUIPMENT_ID AND i.CML_ID = R1.CML_ID AND i.INSPECTION_NO = R1.INSPECTION_NO
SET i.WALL_LOSS = 
    CASE WHEN i.STATUS IN('A','R')
         THEN CASE WHEN R1.DATE_POSITION = 1
                   THEN i.NOMINAL_WALL_THICKNESS - i.MINIMUM_REMAINING_WALL_THICKNESS
                   ELSE R1.PREVIOUS_MIN_RWT - i.MINIMUM_REMAINING_WALL_THICKNESS
              END
         ELSE NULL
    END
WHERE i.EQUIPMENT_ID = '%';

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

MySQL과 PHP의 여러 테이블에서 쿼리를 선택하는 방법

분류에서Dev

MYSQL에서 하나의 쿼리로 여러 테이블을 업데이트하는 방법

분류에서Dev

mysql에서 여러 테이블의 열 이름을 표시하는 방법

분류에서Dev

PHP MYSQL 한 쿼리에서 여러 테이블의 데이터 요소를 연결하는 방법

분류에서Dev

PHP로 mysql 테이블에서 여러 쿼리를 수행하는 방법

분류에서Dev

MYSQL-UPDATE 문의 WHERE 절에서 동일한 테이블에 대한 하위 쿼리

분류에서Dev

MYSQL에서 여러 테이블 수준 검색에 대한 쿼리를 작성하는 방법

분류에서Dev

PHP의 단일 테이블에서 MySQL의 여러 조건으로 여러 쿼리를 결합하는 방법은 무엇입니까?

분류에서Dev

mysql : 하나의 테이블에서 비율을 쿼리하는 방법

분류에서Dev

Mysql이 하나의 ID 만 가져 오는 여러 열이있는 세 테이블에서 쿼리를 조인하는 방법

분류에서Dev

HABTM 조인 테이블의 Rails 쿼리에 LIKE 절을 포함하는 방법

분류에서Dev

방법 : 여러 테이블 조인 및 원하는 열을 하나의 MySQL에 삽입

분류에서Dev

단일 쿼리에서 조인 및 집계 함수를 사용하여 테이블의 여러 행을 업데이트하는 방법

분류에서Dev

MySQL 쿼리에서 여러 테이블을 결합하고 총 열을 기준으로 순위를 매기는 방법

분류에서Dev

mysql 쿼리를 oracle로 변환하는 방법 (3 개의 테이블에서 UPDATE 및 INNER JOIN 2 회 사용)

분류에서Dev

별도의 테이블에서 기준에 따라 2m 이상의 행이있는 MySQL 테이블을 쿼리하는 올바른 방법

분류에서Dev

Aurelia ViewModel의 앱 수준에서 이미 정의 된 라이브러리를 참조하는 방법

분류에서Dev

하나의 테이블에서 여러 개수와 다른 기준을 사용하여 SQL 쿼리 만들기

분류에서Dev

PHP + MySQL-여러 테이블의 ID에 대한 참조를 보유하는 하나의 테이블

분류에서Dev

참조 테이블의 열에서 최대 값으로 행을 쿼리하는 방법은 무엇입니까?

분류에서Dev

Power BI Desktop에서 여러 열의 테이블을 조인하는 방법

분류에서Dev

여러 하위 테이블에 대해 하나의 마스터 테이블을 비교하는 방법

분류에서Dev

하위 쿼리와의 조인에서 조인 된 테이블의 열을 사용하는 방법

분류에서Dev

MySQL에서 세 번째 테이블을 업데이트 할 때 한 테이블의 여러 레코드를 다른 테이블에 삽입하는 방법

분류에서Dev

Roslyn의 Compilation 개체를 사용하여 참조 된 어셈블리에서 어셈블리 수준 특성을 가져 오는 방법이 있습니까?

분류에서Dev

MySQL의 여러 데이터베이스에서 동일한 테이블을 변경하는 방법

분류에서Dev

PHP를 사용하여 mysql의 테이블에서 여러 행을 가져 오는 방법

분류에서Dev

where 절 mysql의 여러 필드에서 null 값을 확인하는 방법

분류에서Dev

하위 하위 쿼리에서 테이블을 참조하는 방법

Related 관련 기사

  1. 1

    MySQL과 PHP의 여러 테이블에서 쿼리를 선택하는 방법

  2. 2

    MYSQL에서 하나의 쿼리로 여러 테이블을 업데이트하는 방법

  3. 3

    mysql에서 여러 테이블의 열 이름을 표시하는 방법

  4. 4

    PHP MYSQL 한 쿼리에서 여러 테이블의 데이터 요소를 연결하는 방법

  5. 5

    PHP로 mysql 테이블에서 여러 쿼리를 수행하는 방법

  6. 6

    MYSQL-UPDATE 문의 WHERE 절에서 동일한 테이블에 대한 하위 쿼리

  7. 7

    MYSQL에서 여러 테이블 수준 검색에 대한 쿼리를 작성하는 방법

  8. 8

    PHP의 단일 테이블에서 MySQL의 여러 조건으로 여러 쿼리를 결합하는 방법은 무엇입니까?

  9. 9

    mysql : 하나의 테이블에서 비율을 쿼리하는 방법

  10. 10

    Mysql이 하나의 ID 만 가져 오는 여러 열이있는 세 테이블에서 쿼리를 조인하는 방법

  11. 11

    HABTM 조인 테이블의 Rails 쿼리에 LIKE 절을 포함하는 방법

  12. 12

    방법 : 여러 테이블 조인 및 원하는 열을 하나의 MySQL에 삽입

  13. 13

    단일 쿼리에서 조인 및 집계 함수를 사용하여 테이블의 여러 행을 업데이트하는 방법

  14. 14

    MySQL 쿼리에서 여러 테이블을 결합하고 총 열을 기준으로 순위를 매기는 방법

  15. 15

    mysql 쿼리를 oracle로 변환하는 방법 (3 개의 테이블에서 UPDATE 및 INNER JOIN 2 회 사용)

  16. 16

    별도의 테이블에서 기준에 따라 2m 이상의 행이있는 MySQL 테이블을 쿼리하는 올바른 방법

  17. 17

    Aurelia ViewModel의 앱 수준에서 이미 정의 된 라이브러리를 참조하는 방법

  18. 18

    하나의 테이블에서 여러 개수와 다른 기준을 사용하여 SQL 쿼리 만들기

  19. 19

    PHP + MySQL-여러 테이블의 ID에 대한 참조를 보유하는 하나의 테이블

  20. 20

    참조 테이블의 열에서 최대 값으로 행을 쿼리하는 방법은 무엇입니까?

  21. 21

    Power BI Desktop에서 여러 열의 테이블을 조인하는 방법

  22. 22

    여러 하위 테이블에 대해 하나의 마스터 테이블을 비교하는 방법

  23. 23

    하위 쿼리와의 조인에서 조인 된 테이블의 열을 사용하는 방법

  24. 24

    MySQL에서 세 번째 테이블을 업데이트 할 때 한 테이블의 여러 레코드를 다른 테이블에 삽입하는 방법

  25. 25

    Roslyn의 Compilation 개체를 사용하여 참조 된 어셈블리에서 어셈블리 수준 특성을 가져 오는 방법이 있습니까?

  26. 26

    MySQL의 여러 데이터베이스에서 동일한 테이블을 변경하는 방법

  27. 27

    PHP를 사용하여 mysql의 테이블에서 여러 행을 가져 오는 방법

  28. 28

    where 절 mysql의 여러 필드에서 null 값을 확인하는 방법

  29. 29

    하위 하위 쿼리에서 테이블을 참조하는 방법

뜨겁다태그

보관