2012-04-29 3 views
1

이 쿼리를 사용하면 MySQL에서 "HY000"오류를 표시합니다. "FROM 절에서 업데이트 할 대상 테이블 'msg_pv'을 지정할 수 없습니다."UPDATE 쿼리에서 하위 쿼리를 사용할 수 없습니까?

문제는 쿼리와 하위 쿼리가 같은 테이블을 목표로하는 것 같습니다 ...하지만이 작업을 수행해야합니다!

<?php $requete = $pdo->prepare('UPDATE msg_pv SET 
     lu=:lu 
     WHERE id_ref_msg = :id_ref_msg AND date_message > (SELECT MIN(date_message) FROM msg_pv WHERE id_ref_msg = :id_ref_msg AND lu="0")'); 

참고 : INNER JOIN을 사용하여 다른 게시물에 대한 해결책을 읽었지만 테이블마다 다릅니다.

답변

3

UPDATE 
    msg_pv AS t1 
CROSS JOIN (
    SELECT MIN(date_message) AS date_message FROM msg_pv 
    WHERE id_ref_msg = :id_ref_msg AND lu="0" 
) AS t2 
SET 
    t1.lu = :lu 
WHERE 
    t1.date_message > t2.date_message 
+0

완벽한, 덕분에 같은 해보십시오. – Anon

관련 문제