문제

다른 테이블에서 MySQL 데이터베이스 테이블에서 열을 업데이트하기 위해 몇 가지 방법을 시도했지만 운이 없습니다.

버전 3.5.2가 멀티 테이블 업데이트를 지원하지 않으며 코드 기반 솔루션이 필요합니다. 맞습니까?

누군가가 SQL을 사용하여 올바른 방향으로 나를 가리킬 수 없다면?

UPDATE products SET products_ordered = (
    SELECT SUM(products_quantity) 
    FROM orders_products 
    WHERE products_id = products.products_id
);

또는:

Create temporary table my_temp_table
as
SELECT products_id, SUM(products_quantity) as total 
FROM orders_products 
GROUP BY products_id 

UPDATE products, my_temp_table
SET products.products_ordered = my_temp_table.total 
WHERE products.products_id = my_temp_table.products_id
도움이 되었습니까?

해결책

하위 쿼리 또는 멀티 테이블 업데이트를 지원하지 않는 MySQL을 사용했을 때 설명하는 작업을 수행하기 위해 트릭을 사용했습니다. 결과 자체가 SQL 문인 쿼리를 실행 한 다음 출력을 저장 한 다음 SQL 스크립트로 실행하십시오.

SELECT CONCAT( 
  'UPDATE products SET products_ordered = ', 
   SUM(products_quantity), 
  ' WHERE product_id = ', products_id, ';') AS sql_statement
FROM orders_products
GROUP BY products_id;

그건 그렇고, 내가 아는 한 MySQL 3.5.x 버전은 없습니다. 나는 당신이 그 잘못을보고했을 것 같아요. 그렇지 않으면 MSQL과 같은 다른 제품을 사용하고 있습니다.

편집하다: 위의 쿼리에서 생성 된 SQL 문에 세미콜론을 추가하는 것을 잊었습니다.

다른 팁

MySQL <= 4.0.4에서 멀티 테이블 업데이트는 지원되지 않습니다. MySQL 5.0.xx로 서버를 업데이트하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top