0

我的数据库中有一张表

              Id        Name
    -------------------------
      1        1          a
      2        1          a
      3        1          a
      4        2          b
      5        2          b
      6        2          b

这是我的数据库表,它有 6 行和 2 列 Id 和 Name

在此表中,字段Id不是主键,我想从我的按id字段表中删除 2 个数字行

删除表的 2 行后,我想要这样的输出

               Id        Name
    -------------------------
      1        1          a
      3        1          a
      4        2          b
      5        2          b
      6        2          b  

可能吗?

4

2 回答 2

4

您的 ID 应该是唯一的,但这里是删除所有 ID 为 2 的 sql。

Delete FROM table WHERE table.Id=2;

将“表”替换为您的表名。

编辑: 看起来你想删除第二个结果。我不知道为什么,但这里是sql:

with rn AS
(
  SELECT *, rn = ROW_NUMBER() OVER (ORDER BY (SELECT 0))
  FROM table  
)
DELETE
FROM rn
WHERE rn = 2
于 2012-08-10T15:26:43.727 回答
2

表中必须有一些标准,您可以通过这些标准来识别其行。那是主键。如何知道行的顺序保持不变?您的表甚至无法排序,我的意思是您不能确定相同的 SELECT 语句以相同的顺序返回行。

这就是为什么我会回答你不能只删除并准确记录第二个,因为你的表中没有订单。一个 SELECT 会在第二个位置产生不同的行。

如果 Id 字段必须具有这样的值,则可能您可以添加代理主键。

于 2012-08-13T05:50:19.663 回答