이 쿼리가 있다고 가정합니다.
UPDATE customerDetails SET age = 17
WHERE customerid = (SELECT max(customerid));
이는 가장 높은 customerid에 대해 고객 연령을 17 세로 변경하기위한 것입니다. 그런데 ID에 관계없이 모든 고객의 연령이이 값으로 변경되는데 왜 그렇습니까?
결과 :
(SELECT max(customerid))
절을 포함하지 않았으므로은 테이블 의 최대 값 이 아닙니다 . 이상한 점은 코드가 오류없이 실행되고이 SELECT가 각 행을 반환한다는 것입니다 !!! 그러나 절 을 포함하더라도 코드에서 오류가 발생합니다.customerid
FROM
customerid
FROM
오류 : ER_UPDATE_TABLE_USED : FROM 절에서 업데이트 할 대상 테이블 'customerDetails'를 지정할 수 없습니다.
Mysql은 다음과 같이 다른 쿼리 안에 중첩 된 경우에만 하위 쿼리를 허용합니다.
UPDATE customerDetails
SET age = 17
WHERE customerid = (SELECT t.maxid FROM (SELECT max(customerid) maxid FROM customerDetails) t);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다