我正在向数据库表中添加数据,每次添加一条记录。添加每条记录后,我需要检查数据库中是否已存在相同的项目。虽然项目可能有多个条目,但每条记录中除“引用”之外的所有列数据可能都不同。
到目前为止我有以下几点:
CREATE PROCEDURE [dbo].[insertAcListingsAircraftData]
....
AS
INSERT INTO tblRes (....)
VALUES (.....)
DELETE FROM tblRes
WHERE Id NOT IN
(
SELECT MAX(Id)
FROM tblRes
GROUP BY reference
)
因此,目标是插入记录,然后通过“name”列将所有记录分组在一起,然后返回最近输入的命名项的行的id。
假设我对上面的代码的理解是正确的,那么获取插入行的Id,然后在delete语句中使用它的最佳方法是什么?
我走的方向对吗?
编辑
我已经将delete语句更改为:
DELETE FROM tblRes
WHERE SCOPE_IDENTITY NOT IN
(
SELECT MAX(Id)
FROM tblRes
GROUP BY reference
)
现在这个能解决问题吗?
3条答案
按热度按时间w80xi6nr1#
如果 ID 列 是 一 个 标识 , 则 可以 使用@@IDENTITY 返回 最 后 插入 的 行 的 ID 。 例如 :
中 的 每 一 个
返回 1 , 然后 返回 2 。
因此 , 在 您 的 原始 存根 中 使用 以下 代码 :
格式
... ... 或者 类似 的 东西 ?
gj3fmq9x2#
请尝试以下查询:
EDIT:您可以使用以下格式删除较旧的行:
elcex8rz3#