sql - 删除自连接中的重复关系

标签 sql sql-server t-sql

我需要自加入一张表,其标准是 id 不应该相同,但市场应该以这种方式相同 我找到了不同 ID 的相关市场,但这样做时我得到了重复的关系,例如 1-3 和 3-1,但我不需要这两个条目 我只需要第一个 1-3 表中有数百万行,所以请帮我优化这个查询。

 declare @tbl table (id int   , market varchar(100))

 insert into @tbl (id,market)
 values(1,'abc'),(2,'xyz'),(3,'abc')

 select a.id , a.market , b.id ,b.market 
 from  @tbl a join  @tbl b 
 on a.id <> b.id 
 and a.market = b.market 

最佳答案

干净简单

select abc.id, abc.market , xyz.id , xyz.market
from  @tbl abc join  @tbl xyz
on abc.id <> xyz.id and abc.market = xyz.market and abc.id < xyz.id

Working SQL Fiddle

关于sql - 删除自连接中的重复关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48314628/

相关文章:

sql - 使用条件递归 SQL/基于条件创建列

sql - 在 SQL 中编写 CASE 语句

mysql - MySQL一对多和一对一关系是如何定义的?

php - MySQL:排序依据不正确

MySQL 按连接表中的分组日期排序

sql-server - SQL Server 2005批量插入二进制类型

c# - 事务登记性能问题

mysql - 选择语句奇怪的行为

sql - 通过重新排序行和列来对二维表进行排序

sql - 如何在SQL Server 2005/8上获取类表查询结果?