删除具有相同值的最后一个插入记录

时间:2014-02-01 05:45:36

标签: sql sql-server sql-delete

我在表格中有以下记录:

User     Product     Quantity
A        Test 1      5
A        Test 1      3
B        Test 1      4
B        Test 2      1

当我运行'DELETE FROM Sample WHERE User='A' AND Product='Test 1'时,我想删除最后插入的记录:

User     Product     Quantity
    A        Test 1      5
    B        Test 1      4
    B        Test 2      1

这可能吗?请指教。

1 个答案:

答案 0 :(得分:2)

根据我的评论,这是一个有效的sql fiddle

请注意,在小提琴示例中,我添加了一个id和last_edited列。我使用GetDate()填充日期时间,但添加连续几天(getdate()+ 1..n)以强制使用唯一的日期时间......

答案并不是最顺畅的,而是在评论中展示了我所说的内容,并且是正确的。顺便说一句,您没有指定SQL Server的版本,但是如果它是2012,您应该使用新的,更高精度的日期时间类型,并在列上添加唯一索引,因为您的日期时间需要是此中的唯一标识符场景。你是否使用代理id!

在此重复评论:

你的桌子中“最后”是什么意思?如果没有日期时间列,则无法确定性地计算在表格中最后放置的记录。至少在SQL Server中没有内部元数据可以提供这样的信息...我还建议使用代理主键,因为没有任何值是唯一的。