2016-03-21 5 views
0

Ich versuche, wie viele Datensätze zu zählen wird nach einem DELETE Befehl gelöscht werden:Count gelöschten Datensätze nach einer DELETE

SELECT COUNT(*) FROM BOXES 
WHERE EXISTS ( 
    DELETE FROM BOXES WHERE product='25043620' AND Order='0846' 
) 

ich einen Syntaxfehler in der Nähe löschen, aber ich kann nicht herausfinden, was es ist.

+0

https://www.sqlite.org/c3ref/changes.html: * Diese Funktion gibt die Anzahl der Zeilen zurück, die bei der zuletzt abgeschlossenen INSERT-, UPDATE- oder DELETE-Anweisung geändert, eingefügt oder gelöscht wurden * –

Antwort

1

Nach

DELETE FROM BOXES WHERE product='25043620' AND Order='0846' 

fragen Sie Ihre Datenbank für Änderungen mit:

SELECT changes() 

und Sie erhalten, wie viele Zeilen gelöscht.

0

Ich glaube nicht, dass Sie die Anzahl und das Löschen kombinieren können. Mach sie einzeln.

hier und Beispiel: -

Beispiel - SQL verwenden EXISTS Klausel

Sie können auch kompliziertere Löschungen durchführen.

Möglicherweise möchten Sie Datensätze in einer Tabelle basierend auf Werten in einer anderen Tabelle löschen. Da Sie beim Ausführen eines Löschvorgangs nicht mehr als eine Tabelle in der SQL FROM-Klausel auflisten können, können Sie die SQL EXISTS-Klausel verwenden.

Zum Beispiel:

DELETE FROM suppliers 
WHERE EXISTS 
    (SELECT customers.customer_name 
    FROM customers 
    WHERE customers.customer_id = suppliers.supplier_id 
    AND customers.customer_name = 'IBM'); 

Dieses SQL-Beispiel löschen Sie alle Datensätze in den Lieferanten Tabelle löschen würde, wo es einen Datensatz in der Tabelle Customers, dessen Name IBM und die customer_id das gleiche wie das ist Lieferanten ID.

Wenn Sie die Anzahl der zu löschenden Zeilen ermitteln möchten, können Sie die folgende SQL SELECT-Anweisung ausführen, bevor Sie die delete-Anweisung ausführen: .

SELECT COUNT(*) FROM suppliers 
WHERE EXISTS 
    (SELECT customers.customer_name 
    FROM customers 
    WHERE customers.customer_id = suppliers.supplier_id 
    AND customers.customer_name = 'IBM'); 

Das von SQL: DELETE Statement

0

Sie könnten versuchen, die Anweisung in einer Schleife mit dem Argument, wie die Schleifen Zustand zu versetzen und dann lassen Sie einfach die Schleifenzahl für Sie, wie es erhöht.