2013-01-15 46 views
0

我面臨一個問題,在我的數據庫中使用NOT IN/NOT EXISTS執行DELETE或UPDATE查詢。我有2個表USERSREMARKMySQL的替代查詢:不存在/不在

提示:Users表記錄= 9880 AND Remark表記錄= 38943

我想從REMARK表,其中profile_id不在users表中存在刪除所有數據。

要執行我用這個查詢操作:

UPDATE remark 
SET status = '0' 
WHERE profile_id NOT IN (SELECT * FROM users); 
Or 
DELETE from remark 
WHERE profile_id NOT EXISTS (SELECT * FROM users); 
Or 
DELETE FROM remark 
WHERE NOT EXISTS (
    select * from users 
    where users.profile_id = remark. profile_id); 

結果=#2013 - 查詢

過程中丟失連接到MySQL服務器,請幫助我。

+0

請考慮接受答案,如果你認爲它是正確的。否則,給答案的作者一個反饋讓他改善答案並幫助你是很好的! – JeanValjean

回答

1

你很近;

UPDATE remark SET status = '0' WHERE profile_id NOT IN 
    (SELECT * FROM users); 

應該是最有可能的;

UPDATE remark SET status = '0' WHERE profile_id NOT IN 
    (SELECT profile_id FROM users); 

因爲*將來自用戶的選擇所有字段,你不能與profile_id對它們進行比較,你只是需要選擇要比較的領域。

當然,您可以使用相同的WHERE子句進行刪除;

DELETE FROM remark WHERE profile_id NOT IN 
    (SELECT profile_id FROM users);