2012-04-29 89 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 2012-04-29 14:51:28