我正在刷新自己的SQL和那个数据库我正在处理glitched(在线培训数据库,并不重要)并重复我的一个条目。它只是一个名字,姓氏,年龄数据库。
我想删除重复的条目 - 但是不能只执行一个简单的remove / where语句,因为它会删除这两个条目。
我知道如何使用临时表从数据库中删除所有重复项并重命名 - 但这似乎有些过分,我怀疑有一种更简单的方法。
答案 0 :(得分:0)
哪个RDBMS?
在大多数情况下,您可以采取以下措施:
set rowcount 1
delete from tbl where firstname = 'john' and lastname = 'doe'
修剪重复项有更复杂的选项,但这应该对你有用。
答案 1 :(得分:0)
在SQL Server
你可以这样做:
WITH MyCTE AS
(
SELECT firstname,
lastname,
age, ROW_NUMBER() OVER (ORDER BY firstname, lastname, age) AS rn
FROM TableName
)
DELETE FROM MyCTE WHERE rn > 1
答案 2 :(得分:0)
如果数据库是Oracle数据库,您可以使用:rowid。
请参阅以下链接:Delete duplicate rows from Oracle tables。
对于SQL Server,您也可以使用rowid。请参阅stackoverflow上的此主题。
如果数据库是MySQL,则stackoverflow上还有另一个线程。