"customer_id"및 "name"필드가 포함 된이 테이블의 이름이 "TableA"입니다. "ref"라는 새 필드를 추가했습니다. 이제 "ref"필드가 customer_id = 1의 첫 번째 항목에 대해 1001, customer_id = 1의 두 번째 항목에 1002, 그리고 customer_id = 2의 첫 번째 항목에 대해 1001로 설정되도록 테이블을 업데이트하려고합니다. 등등.동일한 테이블에서 집계 하위 쿼리를 사용하는 MySQL 업데이트 쿼리
당연히, 나는 예상했던 mysql 오류 메시지를 가지고있다. "FROM 절의 업데이트를 위해 목표 테이블 'TableA'을 지정할 수 없습니다."
또한 (AS SELECT ... A_sub =customer_id
A. A_sub.
customer_id
)이 WHERE (FROM next_ref 해당) 그런데 MySQL이 "
customer_id
A."이 발견되지 않는 것을 말한다 사용하려고.
다음 쿼리는 다음과 같습니다
UPDATE TableA A SET A.ref = ( SELECT COALESCE(MAX(A_sub.ref) +1, 1001) FROM TableA A_sub WHERE A_sub.`customer_id` = A.`customer_id` ) WHERE o.ref IS NULL;
질문입니다 : 이것은 하나 개의 쿼리에서 수행 또는 내가 임시 테이블을 사용해야 할 수 있는가? 도움에 감사드립니다!
Thx Gordon. 질의는 TableA의 모든 레코드에 대해 "1001"을 설정합니다. 이것은 예상했던 것과 다릅니다 (MySQL 5.1.72에서 테스트). 매 업데이트 후에 조인에서 하위 선택에서 MySQL을 "업데이트"할 수있는 방법이 있습니까? –