相关疑难解决方法(0)

如何删除重复的行?

从相当大的SQL Server表中删除重复行的最佳方法是什么(即300,000多行)?

当然,由于RowID身份字段的存在,行不会是完美的重复.

MyTable的

RowID int not null identity(1,1) primary key,
Col1 varchar(20) not null,
Col2 varchar(2048) not null,
Col3 tinyint not null
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server duplicates

1254
推荐指数
31
解决办法
118万
查看次数

T-SQL:删除所有重复的行但保留一行

可能重复:
SQL - 如何删除重复的行?

我有一个行数非常多的表.不允许重复,但由于行如何创建的问题我知道这个表中有一些重复.我需要从关键列的角度消除额外的行.其他一些列的数据可能略有不同,但我并不关心.我仍然需要保留其中一行.SELECT DISTINCT将无法工作,因为它在所有列上运行,我需要根据键列抑制重复.

如何删除额外的行但仍保持有效?

sql t-sql sql-server

254
推荐指数
3
解决办法
29万
查看次数

从sqlite数据库中删除重复的行

我有一个巨大的表--3600万行 - 在SQLite3中.

在这个非常大的表中,有两列

  • 哈希 - 文本
  • d - 真的

但是,有些行是重复的.也就是说,hash和d都具有相同的值.

此外,如果两个哈希值相同,则d的值也相同,但两个相同的ds不表示两个相同的哈希值

无论如何,我想删除重复的行.我没有主键列.最快的方法是什么?


编辑: hash

似乎可以做到这一点.

sql database sqlite

90
推荐指数
2
解决办法
5万
查看次数

从SQL表中删除重复的行(基于多列中的值)

我有以下SQL表:

AR_Customer_ShipTo

+--------------+------------+-------------------+------------+
| ARDivisionNo | CustomerNo |   CustomerName    | ShipToCode |
+--------------+------------+-------------------+------------+
|           00 | 1234567    | Test Customer     |          1 |
|           00 | 1234567    | Test Customer     |          2 |
|           00 | 1234567    | Test Customer     |          3 |
|           00 | ARACODE    | ARACODE Customer  |          1 |
|           00 | ARACODE    | ARACODE Customer  |          2 |
|           01 | CBE1EX     | Normal Customer   |          1 |
|           02 | ZOCDOC     | Normal Customer-2 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server join duplicate-removal

20
推荐指数
4
解决办法
2万
查看次数

postgres 9.2中的ROWID等价物

有没有办法在postgres中获得记录的rowid?

在oracle我可以使用喜欢

SELECT MAX(BILLS.ROWID) FROM BILLS  
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.2

16
推荐指数
2
解决办法
5万
查看次数

在MySQL中使用CTE进行更新或删除

MySQL的新版本8.0现在支持Common Table Expressions

根据手册:

SELECT,UPDATE和DELETE语句的开头允许使用WITH子句:

WITH ... SELECT ...
WITH ... UPDATE ...
WITH ... DELETE ...
Run Code Online (Sandbox Code Playgroud)

因此,我认为,鉴于下表:

ID lastName firstName
----------------------
1  Smith    Pat
2  Smith    Pat
3  Smith    Bob
Run Code Online (Sandbox Code Playgroud)

我可以使用以下查询:

;WITH ToDelete AS 
(
   SELECT ID,
          ROW_NUMBER() OVER (PARTITION BY lastName, firstName ORDER BY ID) AS rn
   FROM mytable
)   
DELETE FROM ToDelete
Run Code Online (Sandbox Code Playgroud)

为了从表中删除重复项,就像在SQL Server中一样

原来我错了。当我尝试DELETE从MySQL Workbench 执行stament时出现错误:

错误代码:1146。表“ todelete”不存在

当我尝试UPDATE使用CTE 时,还会收到一条错误消息。

因此,我的问题是,如何在MySQL WITHUPDATEor DELETE语句的上下文中使用子句(如8.0版的手册中所述)?

mysql common-table-expression sql-update sql-delete mysql-8.0

5
推荐指数
2
解决办法
1859
查看次数

删除重复项,保留其中一个,分组依据

我需要删除每个表 ID 的所有重复项(除了一个)。就像下面这样。我需要删除 valueid 上 01,02,03 的所有重复项...

\n\n

原来的:

\n\n
id      | valueid   |   data\n____________________________\n01      | 1001      |   datadata1       \n01      | 1002      |   datadata2\n01      | 1001      |   datadata1\n02      | 1323      |   datamoredata123\n02      | 1323      |   datamoredata123\n03      | 22123     |   evenmoredata\n03      | 24444     |   andalsomore\n
Run Code Online (Sandbox Code Playgroud)\n\n

应该像这样结束:

\n\n
id      | valueid   |   data\n____________________________\n01      | 1001      |   datadata1       \n01      | 1002      |   datadata2\n02      | 1323      |   datamoredata123\n03      | 22123     |   evenmoredata\n03      | 24444     |   andalsomore\n
Run Code Online (Sandbox Code Playgroud)\n\n

试图用这样的方法来做到这一点,但我不\xc2\xb4t 不明白如何将删除的 id 分组

\n\n
WITH …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

5
推荐指数
1
解决办法
573
查看次数

如何从第一个重复项开始删除具有相同ID的其余行?

我对表具有以下结构DataTable:每列都是数据类型int,RowID是标识列和主键。LinkID是外键,并链接到另一个表的行。

RowID   LinkID   Order  Data    DataSpecifier
1       120      1      1       1
2       120      2      1       3
3       120      3      1       10
4       120      4      1       13
5       120      5      1       10
6       120      6      1       13
7       371      1      6       2
8       371      2      3       5
9       371      3      8       1
10      371      4      10      1
11      371      5      7       2
12      371      6      3       3
13      371      7      7       2
14      371      8 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server duplicates sql-delete

5
推荐指数
1
解决办法
109
查看次数

如何在没有主键或ID字段的表中查找重复项?

我继承了一个SQL Server数据库,里面有重复的数据.我需要找到并删除重复的行.但是没有id字段,我不确定如何找到行.

通常情况下,我会使用a将其与自身进行比较,LEFT JOIN并检查除了ID字段之外的所有字段都是相同的table1.id <> table2.id,但没有它,我不知道如何找到重复行而不是它本身也匹配.

表:

productId int not null,
categoryId int not null,
state varchar(255) not null,
dateDone DATETIME not null
Run Code Online (Sandbox Code Playgroud)

样本数据

1, 3, "started", "2016-06-15 04:23:12.000"
2, 3, "started", "2016-06-15 04:21:12.000"
1, 3, "started", "2016-06-15 04:23:12.000"
1, 3, "done", "2016-06-15 04:23:12.000"
Run Code Online (Sandbox Code Playgroud)

在该示例中,只有第1行和第3行是重复的.

我如何找到重复项?

sql sql-server sql-server-2005 sql-server-2008 sql-server-2012

2
推荐指数
1
解决办法
2547
查看次数

如何找到重复项(正确的方法)?

我正在使用 Snowflake 数据库并运行此查询以查找总数、不同记录数和差异:

select 
    (select count(*) from mytable) as total_count, 
    (select count(*) from (select distinct * from mytable)) as distinct_count,
    (select count(*) from mytable) - (select count(*) from (select distinct * from mytable)) as duplicate_count
from mytable limit 1;
Run Code Online (Sandbox Code Playgroud)

结果:

1,759,867
1,738,924
20,943 (duplicate_count)
Run Code Online (Sandbox Code Playgroud)

但是当尝试使用另一种方法时(将所有列分组并找到计数 > 1 的位置):

select count(*) from (
SELECT 
    a, b, c, d, e,
    COUNT(*)
FROM 
    mytable
GROUP BY 
    a, b, c, d, e
HAVING 
    COUNT(*) > 1
)
Run Code Online (Sandbox Code Playgroud)

我明白了5,436

为什么重复的数量存在差异?(20,943对比5,436 …

sql duplicates snowflake-cloud-data-platform

2
推荐指数
1
解决办法
4999
查看次数

SQL中如何删除重复记录?

这是我原来的表:

在此输入图像描述

预期表:

在此输入图像描述

我无法向表中添加新列。

sql sql-server

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