我试图在 Firebird 2.5 中创建一个 SQL 语句,以便通过在记录存在时添加或简单地插入新行来更新整数数量。如果某个数量已经存在,我似乎无法找到有关添加到某个数量的具体问题的真正答案。
我能想到的 SQL 如下:
UPDATE OR INSERT INTO Pencils(Number, Location, Quantity)
VALUES('12345678/90', 'TOP', 20)
MATCHING(Number, Location);
Run Code Online (Sandbox Code Playgroud)
因此,如果有匹配的记录,我想在实际 20 数量中添加一定数量。
就像我对UPDATE声明所做的那样:
UPDATE Pencils SET Quantity = Quantity + 20 WHERE Number = '12345678/90'
Run Code Online (Sandbox Code Playgroud)
是否有可能通过UPDATE OR INSERT语句达到这样的结果,或者还有其他方法吗?. .
编辑: 与 IBExpert/Delphi 参数一起使用的查询的解决方案
MERGE INTO Pencils AS Dest
USING (SELECT CAST(:myNumb as varchar(30)) AS Number,
CAST(:myLoca as varchar(10)) AS Location,
CAST(:myQuan as integer) AS Quantity
FROM RDB$DATABASE) Src
ON (Dest.Number = Src.Number AND Dest.Location …Run Code Online (Sandbox Code Playgroud)