我的数据库中有一个表
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
有可能吗?
答案 0 :(得分:4)
您的ID应该是唯一的,但这里是删除所有2的ID的SQL。
Delete FROM table WHERE table.Id=2;
将'table'替换为您的表名。
修改强> 看起来您想要删除第二个结果。我不知道为什么,但这里是sql:
with rn AS
(
SELECT *, rn = ROW_NUMBER() OVER (ORDER BY (SELECT 0))
FROM table
)
DELETE
FROM rn
WHERE rn = 2
答案 1 :(得分:2)
表中必须有一些标准可用于标识其行。这是主键。怎么知道行的顺序保持不变?您的表甚至不可排序,我的意思是您不能确定相同的SELECT语句以相同的顺序返回行。
这就是为什么我会回答你不能只删除并准确记录第二,因为你的表中没有订单。一个SELECT会在第二个位置产生不同的行。
如果Id字段必须包含此类值,可能您可以添加代理主键。