SQL |删除重复项,但不进行区分

DISTINCT在某些情况下很有用,但它的缺点是它会增加查询引擎的负载以执行排序(因为它需要将结果集与自身进行比较以删除重复项)

null

以下是替代解决方案:

1.使用 排号 .

WITH CTE (Col1, Col2, Col3, DuplicateCount)
AS
(
  SELECT Col1, Col2, Col3,
  ROW_NUMBER() OVER(PARTITION BY Col1, Col2,
       Col3 ORDER BY Col1) AS DuplicateCount
  FROM MyTable
) SELECT * from CTE Where DuplicateCount = 1

2.使用自连接删除重复项 你的桌子

emp_name   emp_address  sex  matial_status  
uuuu       eee          m    s
iiii       iii          f    s
uuuu       eee          m    s
SELECT emp_name, emp_address, sex, marital_status
from YourTable a
WHERE NOT EXISTS (select 1 
         from YourTable b
         where b.emp_name = a.emp_name and
               b.emp_address = a.emp_address and
               b.sex = a.sex and
               b.create_date >= a.create_date)

3.使用“分组方式”删除重复项 其思想是根据输出中要选择的所有列进行分组。例如,如果我们希望打印“FirstName、LastName和MobileNo”的唯一值,我们可以简单地根据这三个值进行分组。

SELECT FirstName, LastName, MobileNo
FROM  CUSTOMER
GROUP BY FirstName, LastName, MobileNo;
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享