2012-04-28 20 views
0

我已閱讀其他帖子,我真的不明白我在這裏做錯了什麼,因爲它是這樣一個簡單的聲明。MySQL更新,設置與哪裏不工作?

任何東西 '()' 的意見

查詢:

[UPDATE users, sites 
SET users.idSiteRegUsers='1' 
WHERE sites.SiteActivateSites='DEL' ] 

(TBL的選擇對整個查詢中更新) (設置用戶TBL idSiteRegUsers 1) (其中僅DELETE)

我也讀過http://bugs.mysql.com/bug.php?id=52651,並嘗試將INT更改爲VARCHAR並將UPDATING 0更改爲DEL,原因是該錯誤但結果仍然相同。

問題:

我有2129條記錄與使用簡單的SELECT語句來了解結果的數量發現,需要更新。

([SELECT 
sites.SiteActivateSites, 
sites.id_Sites, 
users.idSiteRegUsers, 
users.CompanyNameUsers, 
sites.LinkNameSites 
FROM 
users 
INNER JOIN sites ON users.idSiteRegUsers = sites.id_Sites 
WHERE 
sites.SiteActivateSites != '1']) 'simple' 

但更新查詢更新所有4000+的記錄,而不僅僅是= DEL的記錄,但那些參考另一個值如的那些= 1.

我錯過了什麼嗎?

乾杯, 喬

回答

1

正如你SELECT命令,你需要告訴MySQL中如何聯接表:您UPDATE目前正在做兩個表的完整笛卡爾積(每行users加入了與sites中的每一行 - 因此sites上的WHERE條件篩選仍會導致與users中的每條記錄匹配)。

嘗試,而不是:

UPDATE users JOIN sites ON users.idSiteRegUsers = sites.id_Sites 
SET users.idSiteRegUsers='1' 
WHERE sites.SiteActivateSites='DEL' 
+0

哈哈愚蠢的我!非常感謝你指出這一點。你是超級巨星! – JosephGourvenec 2012-04-28 18:41:12