webentwicklung-frage-antwort-db.com.de

SQL Server INSERT INTO mit WHERE-Klausel

Ich versuche, mit dieser Abfrage einige Schein-Zahlungsinformationen in eine Dev-Datenbank einzufügen:

INSERT
    INTO
        Payments(Amount)
    VALUES(12.33)
WHERE
    Payments.CustomerID = '145300';

Wie kann man das anpassen? Ich habe auch so etwas ausprobiert: 

IF NOT EXISTS(
    SELECT
        1
    FROM
        Payments
    WHERE
        Payments.CustomerID = '145300' 
) INSERT 
    INTO
        Payments(Amount)
    VALUES(12.33);
4
Matt Larson

Ich denke, Sie versuchen, eine Aktualisierungsanweisung zu machen (Betrag = 12.33 für Kunden mit ID = 145300)

UPDATE Payments
SET Amount = 12.33
WHERE CustomerID = '145300'

Andernfalls, wenn Sie versuchen, eine neue Zeile einzufügen, müssen Sie verwenden

IF NOT EXISTS(SELECT 1 FROM Payments WHERE CustomerID = '145300')
    INSERT INTO Payments(CustomerID,Amount)
    VALUES('145300',12.33)

Oder wenn Sie beide Befehle kombinieren möchten (falls ein Kunde vorhanden ist, aktualisieren Sie bitte eine neue Zeile)

IF NOT EXISTS(SELECT 1 FROM Payments WHERE CustomerID = '145300')
    INSERT INTO Payments(CustomerID,Amount)
    VALUES('145300',12.33)
ELSE
    UPDATE Payments
    SET Amount = 12.33
    WHERE CustomerID = '145300'
6
Hadi

Wenn Sie neue Zeilen mit der angegebenen CustomerID einfügen möchten

INSERT
    INTO
        Payments(Amount,CustomerID )
VALUES(12.33,'145300');

wenn Sie bereits eine Zahlung für den Kunden haben, können Sie Folgendes tun:

UPDATE
        Payments
SET Amount = 12.33
WHERE
    CustomerID = '145300';
2
TheOni

Es klingt, als hätte man die customerID bereits gesetzt. In diesem Fall sollten Sie eine Aktualisierungsanweisung verwenden, um eine Zeile zu aktualisieren. Einfügeanweisungen fügen eine komplett neue Zeile hinzu, die keinen Wert enthalten kann.

1
Frank Förster

Möchten Sie ein Update durchführen?

update Payments set Amount  = 12.33 where Payments.CustomerID = '145300' 
1
lucky

Ok, es sieht so aus, als müsste ich eigentlich nur eine Einfügung in die Tabelle "Zahlungen" vornehmen, die die korrekte Kunden-ID hat, da derzeit keine Zahlungen mit dieser Kunden-ID vorhanden sind. Daher kann ich sie nicht aktualisieren. 

Ich habe INSERT INTO Payments (CustomerID, Amount, PaymentTypeID) Values ('145300', 24.99, 8); und dann SELECT * FROM Payments WHERE Payments.CustomerID = '145300'; zur Bestätigung ausgeführt und wir sind im Geschäft. Vielen Dank an alle!

0
Matt Larson