表1结构 如下product_key praent_key product_name level108 98 普通住宅001 3
109 98 普通住宅002 3
111 110 普通别墅001 3
表2结构如下
product_key praent_key product_name level97 0 住宅 1
98 97 普通住宅 2
108 98 普通住宅001 3
109 98 普通住宅002 3
110 97 别墅 2
111 110 普通别墅001 3
112 110 普通别墅002 3输出结果:product_key praent_key product_name level108 98 普通住宅001 3
109 98 普通住宅002 3
111 110 普通别墅001 3
98 97 普通住宅 2
110 97 别墅 2
97 0 住宅 1谢谢各位!!!!
go-->生成表t1if object_id('t1') is not null
drop table t1
Go
Create table t1([product_key] smallint,[praent_key] smallint,[product_name] nvarchar(7),[level] smallint)
Insert into t1
Select 108,98,N'普通住宅001',3
Union all Select 109,98,N'普通住宅002',3
Union all Select 111,110,N'普通别墅001',3-->生成表t2if object_id('t2') is not null
drop table t2
Go
Create table t2([product_key] smallint,[praent_key] nvarchar(3),[product_name] nvarchar(7),[level] smallint)
Insert into t2
Select 97,N'0',N'住宅',1
Union all Select 98,N'97',N'普通住宅',2
Union all Select 108,N'98',N'普通住宅001',3
Union all Select 109,N'98',N'普通住宅002',3
Union all Select 110,N'97',N'别墅',2
Union all Select 111,N'110',N'普通别墅001',3
Union all Select 112,N'110',N'普通别墅002',3select
*
from t2 AS a
WHERE EXISTS(SELECT 1 FROM t1 AS x
WHERE x.product_key=a.product_key
)
OR EXISTS(SELECT 1 FROM t2 AS x
WHERE x.praent_key=a.product_key
)
ORDER BY
level DESC
,product_key
/*
product_key praent_key product_name level
----------- ---------- ------------ ------
108 98 普通住宅001 3
109 98 普通住宅002 3
111 110 普通别墅001 3
98 97 普通住宅 2
110 97 别墅 2
97 0 住宅 1
*/