我試圖刪除數據庫的行沒有電話,chellphone和電子郵件(所有3個一起)如果有兩個及
DELETE *
FROM TEST
WHERE (((TEST.EMAIL1) IS Null)
AND ((TEST.PHONE3) IS Null)
AND ((TEST.PHONE1) IS Null));
出於某種原因,如果我做的只是任意兩個(電子郵件1,電話1或電話3)它的工作原理,但是當我添加第二個'AND'時,它停止工作。任何建議請。
我試圖刪除數據庫的行沒有電話,chellphone和電子郵件(所有3個一起)如果有兩個及
DELETE *
FROM TEST
WHERE (((TEST.EMAIL1) IS Null)
AND ((TEST.PHONE3) IS Null)
AND ((TEST.PHONE1) IS Null));
出於某種原因,如果我做的只是任意兩個(電子郵件1,電話1或電話3)它的工作原理,但是當我添加第二個'AND'時,它停止工作。任何建議請。
與所有AND
S中的括號是不是真的有必要
DELETE
FROM TEST
WHERE TEST.EMAIL1 IS Null
AND TEST.PHONE3 IS Null
AND TEST.PHONE1 IS Null;
但是,需要確保你希望得到實際刪除值中包含NULL
,而不是像空字符串或空的文本值。
您可以查看哪些信息會通過改變你的語句select語句,而不是被刪除:根據您自己的答案,你遇到了空字符串,而不是空你的問題
SELECT *
FROM TEST
WHERE TEST.EMAIL1 IS Null
AND TEST.PHONE3 IS Null
AND TEST.PHONE1 IS Null;
。寫你寫什麼,以避免另一種方式OR值是:
SELECT *
FROM TEST
WHERE isnull(TEST.EMAIL1, '') <> ''
AND isnull(TEST.PHONE3, '') <> ''
AND isnull(TEST.PHONE1, '') <> '';
在我們指出,我們遇到的任何空test.email1s,當作一個空字符串,然後檢查該值以上不是空字符串。
所以基本上 - 如果這三個字段中的任何一個爲空或空字符串。和你的答案一樣,只是寫它的另一種方式。
老實說WHERE子句看起來在這個例子中還行,但「*」應該被排除在外:
DELETE FROM TEST
WHERE (((TEST.EMAIL1) IS Null)
AND ((TEST.PHONE3) IS Null)
AND ((TEST.PHONE1) IS Null));
如果您有刪除星號後的麻煩,它在重新複製粘貼回去,並且我們可以看到括號或其他內容是否存在問題。但是上面的包圍看起來不錯(即使不是必要的)。
我不知道是怎麼回事你的情況,但我已經清理你的發言有點,因爲你不應該需要所有這些()
,據我所知,並刪除不需要*
爲它應該刪除任何符合你的標準的東西。試試看,讓我知道!
DELETE
FROM TEST
WHERE EMAIL1 IS Null
AND PHONE3 IS Null
AND PHONE1 IS Null
DELETE *
FROM test
WHERE (((test.EMAIL1) ="") OR ((test.EMAIL1) IS NULL))
AND (((test.PHONE1) = "") OR ((test.phone1) IS NULL))
AND (((test.PHONE3) ="") OR ((test.phone3) IS NULL));
爲我工作。謝謝大家..
請參閱我更新的答案,以另一種方式寫這個,再次不必處理所有'()'和「或」 – Kritner
如果你的意思是沒有行被「停止工作」刪除 - 也許沒有數據,其中所有3都是NULL。嘗試使用相同的條件觸發選擇。 – 6ton
抱歉停止工作我的意思是什麼都沒有刪除 – Amiaki
6ton意思是:也許你的第三個字段不爲空。 –