Search code examples
sqlsql-serverdatabaset-sqlinsert

SQL Server INSERT INTO with WHERE clause


I'm trying to insert some mock payment info into a dev database with this query:

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

How can adjust this to execute? I also tried something like this:

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

Solution

  • I think you are trying to do an update statement (set amount = 12.33 for customer with ID = 145300)

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

    Else if you are trying to insert a new row then you have to use

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

    Or if you want to combine both command (if customer exists do update else insert new row)

    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'