Czy da się usunąć wszystko z bazy poza wierszami z ustaloną wartością? Zamiast DELETE WHERE delete DELETE WHERE NOT?
0
2
DELETE FROM tabela WHERE NOT (warunek)
2
albo użyć operatora !=
0
Uważałbym na operatory =
i !=
, nawet jeśli cały warunek zostanie zanegowany za pomocą operatora NOT
. Wartości NULL
są wartościami nieokreślonymi (wartość nieznana lub brak wartości) i nie można powiedzieć, że coś nieokreślonego jest równe lub różne od jakiejś konkretnej lub nieokreślonej wartości, dlatego zamiana jednego z tych operatorów na drugi nie zawsze spowoduje zwrócenie tych wszystkich pozostałych danych, które nie zostały zwrócone z użyciem tego pierwszego operatora. W przypadku baz danych to jest oczywiste, ale początkujący mogą nie zdawać sobie z tego sprawy, a autor tematu raczej należy do takich osób, więc proponuję zastanowienie się nad koniecznością dodatkowego użycia operatorów IS NULL
i IS NOT NULL
.