基于公共字段的SQL查询
问题描述:
我需要使用什么SQL查询来获取基于公共参考号的备用零件列表。下面例子中的常见参考是ELS,尽管真实的表格超过了100,000行并带有变量引用。基于公共字段的SQL查询
表A
**Reference Part**
ELS test1
ELS test2
ELS test3
结果
**Part Alternative Part**
test1 test2
test1 test3
test2 test1
test2 test3
test3 test1
test3 test2
答
您可以使用cross join
:
select t1.part, t2.part
from t t1 join
t t2
on t1.els = t2.els and t1.part <> t2.part;
答
这可以用一个简单的自我完成加入
create table #test (reference varchar(10), part varchar(10))
insert into #test values ('ELS', 'test1'), ('ELS', 'test2'), ('ELS', 'test3')
select t1.part as part,
t2.part as alternate_part
from #test t1
inner join #test t2 on t1.reference = t2.reference
where t1.part <> t2.part
order by 1
drop table #test
结果是这样的
part alternate_part
---- --------------
test1 test2
test1 test3
test2 test1
test2 test3
test3 test1
test3 test2
排序,谢谢! – Emma
错误在整个表上运行 - Msg 1101,级别17,状态10,第4行 由于文件组'DEFAULT'中的磁盘空间不足,无法为数据库'TEMPDB'分配新页面。通过删除文件组中的对象,将其他文件添加到文件组或为文件组中的现有文件设置自动增长来创建必要的空间。 – Emma
@Emma。 。 。你可能有一些非常大的团体。 –