0

現在、フィールド CP が別のテーブル CPExcl (CP 列内) 内にあるすべての行を削除しているアクセス データベースがあります。ただし、これを変更して、CPExcl テーブルと一致し、2012 年 9 月 5 日より前の状況でのみこれを削除するようにします。次のコードを作成しましたが、結果はありません。

[CP] not in (select distinct [CP] from CPExcl) 
AND ([CP] in (select distinct [CP] from CPExcl) 
AND LUD >9/5/2012);

どんな助けでも大歓迎です!

ジョシュ

4

1 に答える 1

0

「ただし、これを変更して、CPExcl テーブルと一致し、2012 年 9 月 5より前の状況でのみこれを削除するようにしたい」

削除する前に、まず SELECT してみてください。

([CP] not in (select distinct [CP] from CPExcl) 
AND LUD < #9/5/2012#) -- before 9/5/2012. so change it to less than
OR ([CP] in (select distinct [CP] from CPExcl) 

IIRC、Access の日付型はポンド記号 (#) を使用します。したがって、この 9/5/2012 を #9/5/2012# に変更します。それ以外の場合は整数になります

また、DISTINCT を使用する必要はありません。IN/NOT IN は、関連するクエリに自動的に個別に適用されます。

([CP] not in (select [CP] from CPExcl) 
AND LUD < #9/5/2012#) -- before 9/5/2012. so change it to less than
OR ([CP] in (select [CP] from CPExcl) 

編集

「『CP が CPExcl の列 CP にないものはすべて欲しい』が、『CP が CPExcl の CP 列にあり、LUD が 2012 年 5 月 9 日にあるものも欲しい』」

[CP] not in (select [CP] from CPExcl) 
OR
(
    [CP] in (select [CP] from CPExcl) 
    AND LUD < #9/5/2012# -- before 9/5/2012. so change it to less than
)

これを次のように短絡できます。

[CP] not in (select [CP] from CPExcl) 
OR
LUD < #9/5/2012# -- before 9/5/2012. so change it to less than

念のため、DELETE の前に SELECT を実行し、ロジックが問題に適合しているかどうかを確認してください。ハッピーコーディング!ツ</p>

于 2012-05-21T10:53:36.967 に答える