如何只更新c#.net数据库中同名的最高id
How to update only the highest id of the same Name in c#.net database
我的 FullSummary 数据库有这个 Table 数据:
我只想更新 selected 名称的最高 ID 的“名称、价格和总计”。
如果我select“随机”,则 ID 为 52 的“随机”应该是唯一具有更新数据的。
我试过了:
con.Open();
cmd.CommandText = "UPDATE FullSummary SET Name='" + addRiceTextBox.Text + "', Price='" + addPriceTextBox.Text + "', Total='" + newTotalEdit.Text + "' WHERE(Id, Name) IN(SELECT MAX(Id), Name FROM FullSummary GROUP BY Name)";
cmd.ExecuteNonQuery();
con.Close();
但是它给了我这个错误:
我在这里找到了代码:select only rowwith highest id value if there are identical column values
而这个:How can I select the row with the highest ID in MySQL? 只有 select 一个项目,不会更新它。
SQL 服务器不支持元组比较。所以这个
WHERE(Id, Name) IN (SELECT MAX(Id), Name FROM FullSummary ...)
行不通。所以你应该使用这样的标量子查询(带参数):
UPDATE FullSummary f
SET Price=@price, Total=@total
WHERE Id = (select max(ID) from FullSummary where name = @name)
我的 FullSummary 数据库有这个 Table 数据:
我只想更新 selected 名称的最高 ID 的“名称、价格和总计”。
如果我select“随机”,则 ID 为 52 的“随机”应该是唯一具有更新数据的。
我试过了:
con.Open();
cmd.CommandText = "UPDATE FullSummary SET Name='" + addRiceTextBox.Text + "', Price='" + addPriceTextBox.Text + "', Total='" + newTotalEdit.Text + "' WHERE(Id, Name) IN(SELECT MAX(Id), Name FROM FullSummary GROUP BY Name)";
cmd.ExecuteNonQuery();
con.Close();
但是它给了我这个错误:
我在这里找到了代码:select only rowwith highest id value if there are identical column values
而这个:How can I select the row with the highest ID in MySQL? 只有 select 一个项目,不会更新它。
SQL 服务器不支持元组比较。所以这个
WHERE(Id, Name) IN (SELECT MAX(Id), Name FROM FullSummary ...)
行不通。所以你应该使用这样的标量子查询(带参数):
UPDATE FullSummary f
SET Price=@price, Total=@total
WHERE Id = (select max(ID) from FullSummary where name = @name)