Lösche Zeile die nur NULL Werte enthält

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Lösche Zeile die nur NULL Werte enthält

    Hi

    Gibt es eine Abkürzung für diesen Query ohne in der WHERE - Klausel alle Spalten anzugeben.

    Code:
    DELETE FROM `table` WHERE col1=NULL AND coll2=NULL usw...
    Mfg Akkie

  • #2
    afaik -> nein (scheinbar ist deine Struktur auch etwas kaputt, sowas habe ich noch nie gebraucht)

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Hi

      OK. Dachte ich mir schon. Aber manchmal wird man ja überrascht was doch noch alles geht.

      Zu meiner Struktur:

      Das ganze ist eine Warteschlange in die bei der Änderung eines Benutzer-Profils, die geänderten Daten geschrieben werden, die vom Kundensupport freigegeben werden müssen. Diese Felder können von jedem x beliebigen Typ sein. Deshalb ist die Warteschlange eine genaue Kopie des Benutzerprofils.

      Wenn die Daten durch den Kundensupport bearbeitet und freigegeben werden wird in der Queue der freigegebene Wert auf NULL gesetzt. Den bearbeiteten Datensatz kann ich nach der Freigabe nicht einfach löschen weil wieder neue Daten hinzugekommen sein können. Deshalb muss ich Prüfen ob überall NULL Werte drin stehen.

      Wenn du eine Idee hast wie ich das sonst lösen kann, immer her damit.

      Mfg Akkie
      Zuletzt geändert von ; 28.07.2006, 19:08.

      Kommentar


      • #4
        hm ... timestamp in der Zeile mitspeichern, bei der die Daten zuletzt geändert wurden. Bei der Anzeige in einem Hidden-Field den Timestamp mit ausgeben, wenn beim Bestätigen der Daten der timestamp noch gleich dem ist, der im Datensatz drin ist, kann der Datensatz gelöscht werden, ansonsten wurden die Daten noch ein weiteres Mal geändert (ggf. dann direkt wieder die Seite mit den geänderten Sachen anzeigen)

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Ja ist eine gute Idee. Aber ich es lass es jetzt so.

          Das was ich geschildert habe ist nur ein kleiner Auszug aus dem ganzen. Das sind noch ein paar mehr Tabellen involviert. Würde ich jetzt noch den Timestamp in die Queue - Tabellen einfügen müsste ich dann bei der Erstfreigabe die Querys voll auschreiben. Weil dann ein INSERT INTO SELECT * nicht mehr passen würde.

          Ich habe die Querys schon geschrieben und von der Performance nimmt sich das auch nichts als wenn ich nur eine Bedingung in der Where-Klausel habe.

          Trotzdem danke

          Mfg Akkie

          Kommentar


          • #6
            Ich habe keine entsprechende Funktion gefunden. Man kann natürlich ein SHOW COLUMNS machen und dann die query generieren. Ich würde evtl. ein LEAST(col1, col2,...) machen, in der Hoffnung, wenn irgendein Argument NULL ist, liefert die Funktion NULL zurück. Das müsste man überprüfen. Gemäss A.5.3. Problems with NULL Values müsste es gehen.

            Aus Kap A.5.3: An expression that contains NULL always produces a NULL value unless otherwise indicated in the documentation for the operators and functions involved in the expression. All columns in the following example return NULL:

            mysql> SELECT NULL, 1+NULL, CONCAT('Invisible',NULL);



            Dann ist es ein Fehler, =NULL zu testen. Es muss IS NULL heissen. (auch Kap A.5.3, und Kap. 3.3.4.6. Working with NULL Values)

            Ich merke, du hast eine AND Bedingung: Es gibt eine Funktion ISNULL(col), welche NULL in 1 verwandelt. Das kann man addieren.
            Zuletzt geändert von gleiwitz19; 29.07.2006, 23:46.

            Kommentar

            Lädt...
            X