복붙노트

[SQL] 오류로 실패 업데이트 쿼리 : 1175

SQL

오류로 실패 업데이트 쿼리 : 1175

나는 다음과 같은 쿼리를 사용하여 테이블을 업데이트하려합니다

update at_product A join
(
SELECT atbillfields.billeditemguid,count(*) AS numberOfPeopleBought
    ,sum(atbillfields.billeditemqty) AS soldquantity
FROM jtbillingtest.at_salesbill atsalesbill 
JOIN jtbillingtest.at_billfields atbillfields
    ON atsalesbill.billbatchguid=atbillfields.billbatchguid
WHERE atsalesbill.billcreationdate BETWEEN '2013-09-09' AND date_add('2013-09-09', INTERVAL 1 DAY)
GROUP BY atbillfields.billeditemguid) B ON B.billeditemguid = A.productguid
SET A.productQuantity = A.productQuantity - B.soldquantity

그러나, 다음과 같은 예외를 받고 :

내가 A.productQuantity = 1과 같은 업데이트와 where 절을 준 경우, 특히 것을 업데이트되었습니다.

내가 쿼리를 실행할 수 없습니다 오전 방법이 문제를 해결하기 위해 왜 캔 사람이 포인트?

해결법

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

    1.에서보세요 :

    에서보세요 :

    http://justalittlebrain.wordpress.com/2010/09/15/you-are-using-safe-update-mode-and-you-tried-to-update-a-table-without-a-where-that-uses-a-key-column/

    당신이없이 업데이트 할 경우에 당신은 어디에 키 실행해야합니다

    SET SQL_SAFE_UPDATES=0;
    

    바로 쿼리 전에.

    또 다른 옵션은 키를 포함하도록 쿼리를 다시 작성하는 것입니다.

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

    2.당신이 안전 갱신 모드에서 작동하고있는이 오류 수단 따라서 두 가지 옵션이 있습니다 :

    당신이 안전 갱신 모드에서 작동하고있는이 오류 수단 따라서 두 가지 옵션이 있습니다 :

  3. ==============================

    3.당신은 MySQL의 워크 벤치에 시도 할 수 있습니다

    당신은 MySQL의 워크 벤치에 시도 할 수 있습니다

    편집으로 이동 -> 환경 설정

    클릭 "SQL 편집기"탭을 선택을 취소 "안전 업데이트"확인란

    쿼리 -> 서버에 다시 연결 (다음 로그 아웃하고 로그인)

    나는 당신을 위해 도움이되기를 바랍니다.

  4. ==============================

    4.MySQL은 5.5에서는 다음 MySQL의 워크 벤치를 사용하는 경우

    MySQL은 5.5에서는 다음 MySQL의 워크 벤치를 사용하는 경우

    이 작동합니다.

  5. from https://stackoverflow.com/questions/18767308/update-query-failing-with-error-1175 by cc-by-sa and MIT license