Hier ist also, was ich in meiner MySQL- Datenbank tun möchte .
Ich möchte zu tun:
SELECT *
FROM itemsOrdered
WHERE purchaseOrder_ID = '@purchaseOrdered_ID'
AND status = 'PENDING'
Wenn das keine Zeilen zurückgeben würde, was durch möglich ist if(dr.HasRows == false)
, würde ich jetzt eine UPDATE
in der purchaseOrder
Datenbank erstellen :
UPDATE purchaseOrder
SET purchaseOrder_status = 'COMPLETED'
WHERE purchaseOrder_ID = '@purchaseOrder_ID'
Wie könnte ich diesen Prozess etwas verkürzen?
itemsOrdered_ID
und wiederkehrendepurchaseOrder_ID
Wertepurchaseorder
Datenbank hingegen hat die eindeutige IDpurchaseOrder_ID
Antworten:
Für Ihre spezifische Anfrage können Sie Folgendes tun:
Ich könnte jedoch vermuten, dass Sie sich auf einer höheren Ebene befinden. Versuchen Sie Folgendes, um alle diese Werte festzulegen:
quelle
Sie können die
UPDATE
Syntax für mehrere Tabellen verwenden , um einANTI-JOIN
Zwischen-purchaseOrder
und ein Ergebnis zu erzielenitemsOrdered
:quelle
Da MySQL nicht unterstützt
if exists(*Your condition*) (*Write your query*)
, können Sie eine 'if-Klausel' erreichen, indem Sie wie folgt schreiben:quelle
Sie können auch die folgende Abfrage verwenden, um zu überprüfen, ob der Datensatz vorhanden ist, und ihn dann aktualisieren:
quelle
quelle
SQL
quelle
Nach SQL Server 2008
Merge
können Sie Operationen zum Einfügen, Aktualisieren und Löschen basierend auf einer einzelnen Übereinstimmungsanweisung einfügen, mit der Sie auch beitreten können. Das folgende Beispiel könnte Ihnen helfen.Auf diese Weise können Sie in einer Anweisung Einfügen, Aktualisieren und Löschen.
Weitere Informationen finden Sie in den offiziellen Dokumenten unter https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx
quelle
Wenn die Tabelle Millionen von Datensätzen enthält, funktioniert die folgende Abfrage schnell.
quelle
Sie können eine Variable deklarieren, die die Anzahl der zurückgegebenen Ergebnisse bei der Auswahlabfrage enthält. Sie können dann die Update-Anweisung ausführen, wenn diese Variable größer als 0 ist
quelle