2014-09-05 2 views
0

세 테이블 모두 다릅니다. 공통점은 id이며 image단일 쿼리로 여러 테이블 업데이트

이 쿼리는 각 테이블에 행이있는 경우에만 작동합니다.

가장 좋은 방법은 무엇입니까? 준비된 진술을 사용하지 마십시오. 그건 이미 내 할일 목록입니다 :)

UPDATE subcontent, products, content 
SET subcontent.image = NULL, products.image = NULL, content.image = NULL 
WHERE subcontent.image = 3 
OR products.image = 3 
OR content.image = 'test.png' 

내가 LEFT JOIN를 사용하여 시도했지만 중 하나가 작동하지 않습니다. 검색어가 잘못 되었습니까?

UPDATE content 
LEFT JOIN subcontent on 
    subcontent.image = content.image 
LEFT JOIN products on 
    products.image = content.image 
SET content.image = NULL, subcontent.image = NULL, products.image = NULL 
WHERE content.image = 'test.png' 
OR subcontent.image = 3 
OR products.image = 3 

답변

1

어떻게 세 가지 개별 업데이트가 제공됩니까?

UPDATE subcontent 
    SET subcontent.image = NULL 
    WHERE subcontent.image = 3; 

UPDATE products 
    SET products.image = NULL 
    WHERE products.image = 3; 

UPDATE content 
    SET content.image = NULL 
    WHERE content.image = 'test.png'; 

를 사용하여 멀티 테이블 갱신을 시도으로이 문제는 이것이 join를 사용한다는 것입니다. 아아, 테이블 중 하나가 비어 있으면 조인은 업데이트 할 테이블의 행을 반환하지 않습니다. left join을 사용할 수 있지만 첫 번째 테이블이 비어 있지 않은 것으로 가정해야합니다. 그리고 MySQL은 완전 외부 조인을 지원하지 않습니다.

세 가지 개별 업데이트가 가장 간단한 방법 일 수 있습니다.

+0

흠,'LEFT JOIN'은'content' 테이블이 절대로 비어 있지 않기 때문에 살펴볼 것입니다. – Draven

+0

'LEFT JOIN (왼쪽 조인)'중 하나처럼 보이지 않지만 잘못 할 수 있습니다. 나는 당신이 볼 수 있다면, 내 원래 게시물에 쿼리를 넣어. – Draven

+0

@Draven. . . 그것은 분명히 당신이 원하는 것을하지 않을 것입니다. 'image' 필드는'content'에 문자열을 포함하고있는 것처럼 보이지만 다른 두 테이블에는 숫자가 있습니다. 세 가지 별도의 쿼리를 계속 사용합니다. –

관련 문제