带有 WHERE 子句的 SQL Server INSERT INTO

新手上路,请多包涵

我正在尝试使用此查询将一些模拟付款信息插入开发数据库:

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

如何调整这个来执行?我也尝试过这样的事情:

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

原文由 Matt Larsuma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

我认为您正在尝试执行更新语句 (ID = 145300 的客户的设置金额 = 12.33)

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

否则,如果您尝试插入新行,则必须使用

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

或者,如果您想结合两个命令 (如果客户存在,请更新,否则插入新行)

 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'

原文由 Hadi 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果要修改现有行,请尝试如下更新,

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

原文由 kumar shivam 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进