2011-12-10 50 views
-1

我有5個表。如何更新一個數據來檢查這些數據是否已經存在於所有5個表中。mysql更新數據檢查多表不存在

我知道類似INSERT ... ON DUPLICATE KEY UPDATE,但找不到多表的示例。

現在我使用像一些貧困查詢:

mysql_query("UPDATE table1 SET image = '' WHERE image = '".$image."' "); 
mysql_query("UPDATE table2 SET image = '' WHERE image = '".$image."' "); 
mysql_query("UPDATE table3 SET image = '' WHERE image = '".$image."' "); 
mysql_query("UPDATE table4 SET image = '' WHERE image = '".$image."' "); 
mysql_query("UPDATE table5 SET image = '' WHERE image = '".$image."' "); 
mysql_query("UPDATE table1 SET image = '".$image."' WHERE id = '".$id."'"); 

首先更新爲空值,其中數據是DUPLICATE然後插入值的每個表。這將花費更多的MySQL連接,我認爲...那麼如何使用更少的查詢來做這個更新?謝謝。

EDIT1:嘗試了下面的內容,它會更新忽略值以檢查值是否已經在五個表中的一個表中退出。

mysql_query(" 
UPDATE table1,table2,table3,table4,table5 
SET table1.image='".$image."' 
WHERE table1.id='".$id."' 
AND table1.image!='".$image."' 
AND table2.image!='".$image."' 
AND table3.image!='".$image."' 
AND table4.image!='".$image."' 
AND table5.image!='".$image."' 
"); 
+0

你爲什麼有5個相同的表? –

+0

如果圖像不在5中的任何一個,它應該插入哪個表中? –

+0

@ypercube,我正在爲圖像大拇指創建工作。 5表是不同的結構,但我想避免重複的拇指圖像URL插入不同的表。謝謝。 – cj333

回答

2

行,我覺得這是你問什麼

update table1 AS t1 
     LEFT JOIN table1 AS t1copy 
      ON t1copy.image = '$image'  
    set t1.image = '$image' 
where t1.id = $id 
    and t1copy.image IS NULL 
    and not exists(select 1 from table2 where table2.image = '$image') 
    and not exists(select 1 from table3 where table3.image = '$image') 
+0

謝謝你的回答,但我只想在'table1.image'中插入'$ image',並避免從''table1.image'' table2.image'' table3.image' table4.image'' table5中的'DUPLICATE' .image')。不要將值插入到2個表中,謝謝。 – cj333

+0

它不會插入到任何表中。它執行相當於你的前5個查詢。我選擇這樣做是因爲你對你想要的內容的解釋並不清楚,但是你的代碼精確地講話。 – goat

+0

對不起,我不能很好地解釋我的問題,因爲我的EDIT1代碼的願望,我想更新一個值到'table1',但我想先檢查:如果這個值已經在一個表中的五,不更新。如果所有5個表都沒有這個值,則更新。希望你能理解並幫助我,問候。 – cj333