当我需要知道某些列c包含超过n重复的行数时,我可以这样做:
WITH duplicateRows AS (
SELECT COUNT(1)
FROM [table]
GROUP BY c
HAVING COUNT(1) > n
) SELECT COUNT(1) FROM duplicateRows
这导致了一种不想要的行为: SQL Server计算按i分组的所有行,这(当此表上没有索引时)会导致糟糕的性能。
但是,当更改脚本以使SQL Server不必计算所有行时,并不能解决问题:
WITH duplicateRows AS (
SELECT
我有一个名为table1的表,它有重复的值。它看起来是这样的:
new
pen
book
pen
like
book
book
pen
但是我想从该表中删除重复的行,并将它们插入到另一个名为table2的表中。
table2应该如下所示:
new
pen
book
like
如何在SQL Server中执行此操作?
在Mysql中,我有一个包含两列(id、uuid)的表。然后我向其中插入了3000万个值。(ps: uuid可以重复) 现在,我想使用Mysql语法在表中查找重复值,但是sql花费了太多时间。 我想搜索所有列,但这需要很多时间,所以我尝试查询前一百万行,这花费了8秒。 然后我尝试了1000万行,它花了5分钟,然后2000万行,服务器似乎死了。 select count(uuid) as cnt
from uuid_test
where id between 1
and 1000000
group by uuid having cnt > 1; 任何人都可以帮我优化sql,谢谢
假设我有一个表raw,它复制了(由PK)行,并希望将非重复行插入到表dedup中,并将重复的行插入到dup中。
create table raw (A int, B char(5), C float, D money)
create table dedup(A int, B char(5), C float, D money primary key (A, B))
create table dup (A int, B char(5), C float, D money)
insert into raw values
(1, 'a', 2, 3), -- insert in
我想从一个Hive表中找到重复的行,给了我两种方法。
第一种方法是使用以下两个查询:
select count(*) from mytable; // this will give total row count
第二个查询如下所示,它将给出不同行的计数
select count(distinct primary_key1, primary_key2) from mytable;
使用这种方法,对于使用第一个查询导出的表总行数之一是3500,而第二个查询提供行计数2700。因此它告诉我们3500 - 2700 = 800行是重复的。但是,这个查询不能判断哪些行是重复的。
我发现重复的第二个方
我继承了一个SQL Server数据库,其中包含重复的数据。我需要找到并删除重复的行。但是没有id字段,我不知道如何找到行。
通常,我会使用LEFT JOIN将其与其自身进行比较,并检查所有字段是否相同,但ID字段将是table1.id <> table2.id,但如果没有该字段,我不知道如何查找重复行,并且也不知道它本身是否匹配。
表:
productId int not null,
categoryId int not null,
state varchar(255) not null,
dateDone DATETIME not null
样本数据
1, 3, "st
我正在使用SQL Server。我有一个表,其中包含大约75000条记录。其中有几条重复的记录。所以我写了一个查询,想知道哪条记录重复了多少次,
SELECT [RETAILERNAME],COUNT([RETAILERNAME]) as Repeated FROM [Stores] GROUP BY [RETAILERNAME]
它给我的结果是,
---------------------------
RETAILERNAME | Repeated
---------------------------
X | 4
---------------------
我正在使用Server。我已经创建了超过20000行的SQL表。我使用以下查询筛选复制。
SELECT
Entity,ExpenseType,Amount,Description,APSupplierID,ExpenseReportID,Employee,ExpenseDate,COUNT(*)
FROM
TotalsByGLCenter
GROUP BY
Entity,ExpenseType,Amount,Description,APSupplierID,ExpenseReportID,Employee,ExpenseDate
HAVING
COUNT(*)
我正在使用SQL Server Management Studio 2012。我有一个包含数千行数据的表。许多行是重复的,我需要删除它们。每行都有一个唯一标识符[OwnerID],该标识符被设置为标识规范,标识增量为1。对于每一行,重复项位于以下列中:[FirstName]、[LastName]和[CompanyName]。
因此,我需要删除这3列中具有重复值组合的行。删除后,是否可以编写t-sql来将[OwnerID]中的身份规范重置为第一行从1开始,并以1为增量将值分配给其余行?
谢谢你的帮助。