MySQL Alle Zeilen löschen außer wenn der Wert vorhanden

MisterSimpson

Simpsons Fan
ID: 50883
L
20 April 2006
2.947
106
Hallo,

habe gerade google bemüht, aber leider nicht das gefunden was ich suche.

Wenn ich alle Zeilen mit 1234 löschen möchte ist der Befehl ja einfach:
Code:
DELETE FROM tabelle WHERE model = '1234'";

Jetzt möchte ich aber alle Zeilen löschen die den Wert 1234 nicht enthalten. Wenn aber in der Zeile steht: "Rechts 1234 Links" Soll er diese aber auch nicht löschen, da ja 1234 drinnen steht. Steht da aber nur "Rechts Links" drinnen, dann soll er die Zeile löschen.

Wie lautet der Befehl aber?
 
Wenn ich dich richtig verstanden habe:

Code:
DELETE FROM tabelle WHERE model NOT LIKE  '%1234%';
 
Mh ich habe das gerade mal mit Strichen und ohne Strichen probiert

Code:
SELECT FROM `tabelle` WHERE `model` NOT LIKE '%1234%';

Weil ich schauen wollte was er löschen würde habe ich statt DELETE , SELECT geschrieben.

Das habe ich also bei PHPMyAdmin eingetragen, aber da kommt folgende Fehlermeldung:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `tabelle` WHERE `model` NOT LIKE '%1234%' LIMIT 0, 30' at line 1

Wo ist mein Fehler?
 
he diese SQL wäre gefährlich

ich weis nicht was "model" für Eigenschaften hat, aber es könnte folgendes passieren

falls model den Wert "234" hat, wird auch "12345" einbezogen.
Ebenso wäre es bei "hund" und "hundert"

Also vorsichtig und evtl überlegen, das ganze über eine Schleife zu verwirklichen und nicht mit LIKE zu arbeiten
 
ja schon klar...

dann werden eben Datensätze nicht gelöscht, die diese Zeichenkette enthalten

Arbeitet also so oder so unsauber
 
Wenn "Wert" (wie der Threadersteller es nennt) gleichbedeutend ist mit "Zeichenkette", funktioniert die Query.

Verstößt der Threadersteller aber die 1NF, kann dieses LIKE-Gedöngs auch schnell nach hinten losgehen.
 
ja ! Danke :)

Wenn man Supporterfahrungen hat, geht man immer davon aus, dass die Aussage nicht 100% zutreffend bzw vollständig ist.
Insofern wollte ich es nur anmerken.
 
Ne war schon richtig von dahippi.

Ich wollte alle Zeilen behalten die 1234 enthalten. Alle anderen sollten gelöscht werden.