0

データベースで NOT IN / NOT EXISTS を使用して DELETE または UPDATE クエリを実行する際に問題に直面しています。私は2つのテーブルUSERSREMARK.

ヒント:Usersテーブル レコード = 9880 ANDRemarkテーブル レコード = 38943

テーブルに存在しないREMARKテーブルからすべてのデータを削除したい。 profile_idusers

操作を実行するために、次のクエリを使用しました。

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 サーバーへの接続が失われました

私を助けてください。

4

2 に答える 2

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); 
于 2013-01-15T19:52:49.680 に答える
0
DELETE FROM REMARK
WHERE NOT EXISTS (
    SELECT *
    FROM USERS
    WHERE profile_id=REMARK.profile_id
)

以下は機能しないことに注意してください(または他の類似のバリエーション):

DELETE FROM REMARK r
WHERE NOT EXISTS (
    SELECT *
    FROM USERS
    WHERE profile_id=r.profile_id
)

参照したため。クレジット: http://www.electrictoolbox.com/mysql-delete-records-in-one-table-not-in-another/

于 2013-07-05T06:15:17.713 に答える