7

私は2つのテーブルを持っています。メイン テーブルは「CompleteEmailListJuly11」で、2 番目のテーブルは「CurrentCustomersEmailJuly11」です。CurrentCustomersEmailJuly11 が電子メールに基づいている CompleteEmailListJuly11 テーブルの行を削除したいと考えています。

この次の削除の例を試しましたが、私がやろうとしていることに近いことは何もしません。これは、データベースに存在するもののみを表示します。一致しない電子メールのリストは表示しません。

DELETE * FROM CompleteEmailListJuly11 AS i 
WHERE EXISTS ( 
    SELECT 1 FROM CurrentCustomersEmailJuly11 
    WHERE CurrentCustomersEmailJuly11.email = i.EmailAddress
)

助けていただければ幸いです。

4

4 に答える 4

12

これはあなたが必要だと思うクエリです:

DELETE FROM CompleteEmailListJuly11
WHERE EmailAddress IN (SELECT email FROM CurrentCustomersEmailJuly11)

Ps: DELETE クエリは個々のフィールドを削除せず、行全体のみを削除するため、* は必要ありません。「プレビュー」や「エクスポート」ではなく、このクエリを「実行」する必要もあります。

于 2012-07-12T09:44:32.960 に答える
1

DELETEAccess のクエリ デザイナでクエリを作成している場合は、「先に進んでこれを実行してください」のように見える 2 つの異なる操作モードがあることに注意してください。

  1. データシート ビュー (リボンの [デザイン] セクションにある [表示] というグリッド アイコンで表されます)。このビューでは、影響を受けるレコードをプレビューできますが、実際には削除されません。
  2. 「実行」アイコン (赤い感嘆符で表されます)。「実行」は実際にクエリを実行し、影響を受けるレコードを削除します。

あなたがすでにこれを知っているなら、私の説明は侮辱的に見えるかもしれません. ごめん。ただし、Access を初めて使用する人は、それらの違いを見落としがちです。

于 2012-07-11T20:03:54.010 に答える
0

削除に適したこのようなものを使用できます

  SELECT ... // complete
  EXCEPT
  SELECT ... // current

削除にどのようにマッピングされるか正確にはわかりませんが、それを見てください。

私は同様の質問でそれが好きです: SQLテーブルを「減算」するにはどうすればよいですか?

于 2012-07-11T17:06:23.930 に答える
0

相関クエリを使用して、次のような問題を解決できます

DELETE FROM COMPLETE C 
WHERE EMAIL = (SELECT EMAIL FROM CURR CU WHERE CU.EMAIL=C.EMAIL);
于 2012-07-11T17:26:13.733 に答える