복붙노트

[SQL] MySQL은 # 1093 - 당신은 FROM 절에서 업데이트 대상 테이블 '경품'을 지정할 수 없습니다

SQL

MySQL은 # 1093 - 당신은 FROM 절에서 업데이트 대상 테이블 '경품'을 지정할 수 없습니다

나는 시도했다 :

UPDATE giveaways SET winner = '1' WHERE ID = (SELECT MAX(ID) FROM giveaways)

그러나 제공합니다 :

이 문서에서는 관련 보이지만 내 쿼리에 적응 할 수 없다. 어떻게이 일에받을 수 있나요?

해결법

  1. ==============================

    1.당신의 업데이트가 순환 될 수 있기 때문입니다 ... 어떤 레코드가 WHERE 조건 FALSE를 만든있는 일이 뭔가 원인이 업데이트 있다고하면? 당신은 그런 경우가 아니라는 것을 알고 있지만, 엔진은하지 않습니다. 또한 동작 테이블에 반대하는 잠금 장치가있을 수 있습니다.

    당신의 업데이트가 순환 될 수 있기 때문입니다 ... 어떤 레코드가 WHERE 조건 FALSE를 만든있는 일이 뭔가 원인이 업데이트 있다고하면? 당신은 그런 경우가 아니라는 것을 알고 있지만, 엔진은하지 않습니다. 또한 동작 테이블에 반대하는 잠금 장치가있을 수 있습니다.

    나는 당신이 (안된) 이런 식으로 그것을 할 수 있다고 생각합니다 :

    UPDATE
        giveaways
    SET
        winner = '1'
    ORDER BY
        id DESC
    LIMIT 1
    

    자세히보기

  2. ==============================

    2.이 일을해야 링크 된 문서의 정보를 기반으로 :

    이 일을해야 링크 된 문서의 정보를 기반으로 :

    update giveaways set winner='1'
    where Id = (select Id from (select max(Id) as id from giveaways) as t)
    
  3. ==============================

    3.

    update giveaways set winner=1 
    where Id = (select*from (select max(Id)from giveaways)as t)
    
  4. ==============================

    4.

    create table GIVEAWAYS_NEW as(select*from giveaways);
    
    update giveaways set winner=1
    where Id=(select max(Id)from GIVEAWAYS_NEW);
    
  5. ==============================

    5.임시 테이블을 사용합니다 :

    임시 테이블을 사용합니다 :

    로 다음과 같습니다 :

    UPDATE TABLE_NAME SET TABLE_NAME.IsActive=TRUE
    WHERE TABLE_NAME.Id IN (
        SELECT Id
        FROM TEMPDATA
    );
    
    CREATE TEMPORARY TABLE TEMPDATA
    SELECT MAX(TABLE_NAME.Id) as Id
    FROM TABLE_NAME
    GROUP BY TABLE_NAME.IncidentId;
    
    SELECT * FROM TEMPDATA;
    
    DROP TABLE TEMPDATA;
    
  6. ==============================

    6.먼저 서브 쿼리의 뷰를 작성하고 대신 뷰에서 업데이트 / 삭제 선택 할 수 있습니다 .. 그냥 후 볼을 드롭해야합니다.

    먼저 서브 쿼리의 뷰를 작성하고 대신 뷰에서 업데이트 / 삭제 선택 할 수 있습니다 .. 그냥 후 볼을 드롭해야합니다.

  7. from https://stackoverflow.com/questions/8333376/mysql-1093-you-cant-specify-target-table-giveaways-for-update-in-from-clau by cc-by-sa and MIT license