相关疑难解决方法(0)

如何删除表中的重复行

我有一个表3列的表.没有主键,因此可能存在重复的行.我需要保留一个并删除其他人.任何想法如何做到这一点是Sql Server?

sql database sql-server

14
推荐指数
3
解决办法
6160
查看次数

PostgreSQL with-delete"关系不存在"

我正在使用postgreSQL 9.1,我想使用这个技巧从我的表中删除重复项:https: //stackoverflow.com/a/3822833/2239537

所以,我的查询看起来像这样:

WITH cte
 AS (SELECT ROW_NUMBER() 
 OVER (PARTITION BY code, card_id, parent_id 
     ORDER BY id DESC) RN
     FROM card)
DELETE FROM cte
WHERE RN > 1
Run Code Online (Sandbox Code Playgroud)

但它告诉我

ERROR: relation "cte" does not exist
SQL state: 42P01
Character: 157
Run Code Online (Sandbox Code Playgroud)

但是这个说法很好:

WITH cte
 AS (SELECT ROW_NUMBER() 
 OVER (PARTITION BY code, card_id, parent_id 
     ORDER BY id DESC) RN
     FROM merchantcard)
SELECT * FROM cte
WHERE RN > 1
Run Code Online (Sandbox Code Playgroud)

任何想法如何让它工作?谢谢!

sql postgresql postgresql-9.1

10
推荐指数
2
解决办法
6815
查看次数

';' 在TSQL语句的开头

我不时会看到以分号';'开头的SQL Server语句 如下

;WITH cte
     AS (SELECT ROW_NUMBER() OVER (PARTITION BY Col1, Col2, Col3 
                                       ORDER BY ( SELECT 0)) RN
         FROM   #MyTable)
DELETE FROM cte
WHERE  RN > 1
Run Code Online (Sandbox Code Playgroud)

另一个例子是 ;THROW

为什么确实存在';' TSQL语句的开头

更新1:

请注意,我在询问';' 在陈述的开头.这个问题与此问题不重复

我什么时候应该在SQL Server中使用分号?

更新2:

@MartinSmith的回答很有道理.

为了确保我们对这篇文章有完整的答案,请考虑这篇受人尊敬的文章:

http://www.sommarskog.se/error_handling/Part1.html#jumpTHROW

在这一点上你可能会对自己说:他必须拉我的腿,微软真的称之为命令;那么?不仅仅是那个吗?没错,如果您在联机丛书中查找,则没有领先的分号.但分号必须在那里.正式地说,它是前一个语句的终结符,但它是可选的,并且远非每个人都使用分号来终止它们的T-SQL语句.

我同意@MartinSmith的答案,但似乎这件事情正处于一些非常极端的程度.

通常,在存储过程中,THROW是其自己的行的声明.SQL开发人员不仅仅是合并这样的SQL行而错过了分号.

对我来说,人们更有可能意外地放弃一张桌子,而不是将"THROW"语句与另一行TSQL混合

在上面的引文中解释的情况是极端且罕见的吗?或者我在这里错过了一点?

t-sql sql-server

10
推荐指数
1
解决办法
239
查看次数

从没有主键的临时表中删除重复的字段

我需要从临时表中删除重复字段,其中有问题的字段不完全相同.

例如,我有以下数据:

First  Last     DOB
John   Johnson  10.01.02
Steve  Stephens 23.03.02
John   Johnson  2.02.99
Dave   Davies   3.03.03
Run Code Online (Sandbox Code Playgroud)

这里有约翰约翰逊的两个.我只想要一个约翰逊 - 我不在乎哪一个.所以结果表看起来像:

First  Last     DOB
John   Johnson  10.01.02
Steve  Stephens 23.03.02
Dave   Davies   3.03.03
Run Code Online (Sandbox Code Playgroud)

我正在使用TSQL,但我更喜欢使用非专有的SQL.

谢谢

sql t-sql sql-server sql-delete

8
推荐指数
2
解决办法
5716
查看次数

您无法在FROM子句中为更新指定目标表'NAME'

我试图将此解决方案应用于MySQL DB中具有重复项的表中的数据.我得到这样的错误:

SQL Error [1093] [HY000]: You can't specify target table 'NAME' for update in FROM clause


DELETE NAME FROM NAME
WHERE NAME.id NOT IN
   (SELECT MIN(id) 
   FROM NAME GROUP BY col1, col2)
Run Code Online (Sandbox Code Playgroud)

也尝试过分配别名 - 但没有成功.这个错误的原因是什么?它通常指出SQL脚本可以产生循环过程,但在这里我实际上没有看到任何与此相关的 - 很明显,两个选择for DELETE和for SELECT是分离的 - 引擎必须SELECT 首先执行一次然后在WHERE条件中使用它DELETE.那么 - 为什么会发生这种错误,我怎样才能实际删除我的表格?=)

mysql sql

8
推荐指数
1
解决办法
1万
查看次数

根据一个列值删除重复的行

我有下表,现在我需要删除具有重复"refIDs"的行,但至少有一行与该ref,即我需要删除第4行和第5行.请帮我这个

+----+-------+--------+--+
| ID | refID |  data  |  |
+----+-------+--------+--+
|  1 |  1023 | aaaaaa |  |
|  2 |  1024 | bbbbbb |  |
|  3 |  1025 | cccccc |  |
|  4 |  1023 | ffffff |  |
|  5 |  1023 | gggggg |  |
|  6 |  1022 | rrrrrr |  |
+----+-------+--------+--+
Run Code Online (Sandbox Code Playgroud)

mysql sql

8
推荐指数
3
解决办法
1万
查看次数

从数据表中删除重复项的最佳方法是什么?

我检查了整个网站并在网上搜索,但无法找到解决此问题的简单方法.

我有一个大约有20列和10K行的数据表.我需要根据4个键列删除此数据表中的重复行.不.Net有这样的功能吗?最接近我正在寻找的函数是datatable.DefaultView.ToTable(true,要显示的列数组),但是这个函数在所有列上都是不同的.

如果有人可以帮助我,这将是很好的.

编辑:对不起,我很抱歉.通过读取CSV文件而不是数据库来创建此数据表.因此,使用SQL查询不是一种选择.

c# datatable duplicates

7
推荐指数
2
解决办法
3万
查看次数

如何删除完全重复的行

假设我的表中有重复的行,而且我的数据库设计是第3类: -

Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Cinthol','cosmetic soap','soap');
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Cinthol','cosmetic soap','soap');
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Cinthol','cosmetic soap','soap');
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Lux','cosmetic soap','soap');
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Crowning Glory','cosmetic soap','soap');
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (2,'Cinthol','nice soap','soap');
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (3,'Lux','nice soap','soap');
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (3,'Lux','nice soap','soap');
Run Code Online (Sandbox Code Playgroud)

我希望每个表中只有1个实例存在于我的表中.因此,2nd, 3rd and last row应该删除完全相同的whcih.我可以为此写什么查询?可以在不创建临时表的情况下完成吗?只需一个查询?

提前致谢 :)

sql t-sql sql-server duplicate-removal sql-server-2008

7
推荐指数
1
解决办法
1148
查看次数

MySql:根据列重复值删除表行?

我有一个带有年份列的表,此列不应具有重复值.所以我最终得到的表只有一个2007年的记录.

那么如何删除那些具有重复年份值的行呢?

谢谢

mysql sql duplicate-removal

7
推荐指数
1
解决办法
5920
查看次数

SQL - 如何按上次输入的值删除重复的行?

我从这个链接有这个代码:如何删除重复的行?

 ;WITH cte
 AS (SELECT ROW_NUMBER() OVER (PARTITION BY person_id, date_work, hours
                                   ORDER BY ( SELECT 0)) RN
     FROM   work_hours)
 DELETE FROM cte
 WHERE  RN > 1
Run Code Online (Sandbox Code Playgroud)

是否可以删除第一个输入的重复行或我应该有一个额外的列date_of_entry?我想这样做,如果我输入相同的date_work和不同的小时,PARTITION BY person_id, date_work它删除随机重复.

如果不可能,我怎样才能删除更高时间的重复项?

sql sql-server duplicate-removal

7
推荐指数
1
解决办法
1573
查看次数