表1
设备 产品类型 产品名称
1号 A a1
1号 A a2
1号 B a3
2号 A a1
2号 A a4
3号 C a1
4号 D a2
表2
产品类型 产品名称
A a2
B a1
A a4
C a1
D a2
D a2
A a2
现在想要查询出表1中的与表2产品类型和产品名称完全相同的行(表2中的产品类型和产品名称要去除重复值),不考虑表1中设备。结果应该是:
设备 产品类型 产品名称
1号 A a2
2号 A a4
3号 C a1
4号 D a2
设备 产品类型 产品名称
1号 A a1
1号 A a2
1号 B a3
2号 A a1
2号 A a4
3号 C a1
4号 D a2
表2
产品类型 产品名称
A a2
B a1
A a4
C a1
D a2
D a2
A a2
现在想要查询出表1中的与表2产品类型和产品名称完全相同的行(表2中的产品类型和产品名称要去除重复值),不考虑表1中设备。结果应该是:
设备 产品类型 产品名称
1号 A a2
2号 A a4
3号 C a1
4号 D a2
from tb1 a
where exists(select 1 from tb2 where 产品类型 = a.产品类型 and 产品名称 = a.产品名称)
-- Author: happyflystone
-- Date : 2009-05-10 10:30:59
-- Ver: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)
-- Apr 14 2006 01:12:25
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
--
-------------------------------------------------------------------------- Test Data: T1
IF OBJECT_ID('T1') IS NOT NULL
DROP TABLE T1
Go
CREATE TABLE T1(设备 NVARCHAR(2),产品类型 NVARCHAR(1),产品名称 NVARCHAR(2))
Go
INSERT INTO T1
SELECT '1号','A','a1' UNION ALL
SELECT '1号','A','a2' UNION ALL
SELECT '1号','B','a3' UNION ALL
SELECT '2号','A','a1' UNION ALL
SELECT '2号','A','a4' UNION ALL
SELECT '3号','C','a1' UNION ALL
SELECT '4号','D','a2'
GO
-- Test Data: T2
IF OBJECT_ID('T2') IS NOT NULL
DROP TABLE T2
Go
CREATE TABLE T2(产品类型 NVARCHAR(1),产品名称 NVARCHAR(2))
Go
INSERT INTO T2
SELECT 'A','a2' UNION ALL
SELECT 'B','a1' UNION ALL
SELECT 'A','a4' UNION ALL
SELECT 'C','a1' UNION ALL
SELECT 'D','a2' UNION ALL
SELECT 'D','a2' UNION ALL
SELECT 'A','a2'
GO
--Start
select *
from t1 a
where exists(select 1 from t2 where 产品类型 = a.产品类型 and 产品名称 = a.产品名称)--Result:
/*
设备 产品类型 产品名称
---- ---- ----
1号 A a2
2号 A a4
3号 C a1
4号 D a2*/
--End
DROP TABLE T1
Go
CREATE TABLE T1(设备 NVARCHAR(2),产品类型 NVARCHAR(1),产品名称 NVARCHAR(2))
Go
INSERT INTO T1
SELECT '1号','A','a1' UNION ALL
SELECT '1号','A','a2' UNION ALL
SELECT '1号','B','a3' UNION ALL
SELECT '2号','A','a1' UNION ALL
SELECT '2号','A','a4' UNION ALL
SELECT '3号','C','a1' UNION ALL
SELECT '4号','D','a2'
GO
-- Test Data: T2
IF OBJECT_ID('T2') IS NOT NULL
DROP TABLE T2
Go
CREATE TABLE T2(产品类型 NVARCHAR(1),产品名称 NVARCHAR(2))
Go
INSERT INTO T2
SELECT 'A','a2' UNION ALL
SELECT 'B','a1' UNION ALL
SELECT 'A','a4' UNION ALL
SELECT 'C','a1' UNION ALL
SELECT 'D','a2' UNION ALL
SELECT 'D','a2' UNION ALL
SELECT 'A','a2' select distinct TT.设备,TT.产品类型,TT.产品名称 from T1 TT inner join T2 t on TT.产品类型=t.产品类型 and TT.产品名称=t.产品名称
设备 产品类型 产品名称
---- ---- ----
1号 A a2
2号 A a4
3号 C a1
4号 D a2(4 行受影响)
INNER JOIN
(SELECT DISTINCT T2.[产品类型],T2.[产品名称] FROM T2)T3
ON T1.产品类型=T3.产品类型 AND T1.产品名称=T3.产品名称--Result设备 产品类型 产品名称
---- ---- ----
1号 A a2
2号 A a4
3号 C a1
4号 D a2
OrSELECT T1.* from T1
INNER JOIN
(SELECT DISTINCT T2.* FROM T2)T3
ON T1.产品类型=T3.产品类型 AND T1.产品名称=T3.产品名称
select distinct * from 表1 inner jion 表2 on 表1.产品类型=表2.产品类型 and 表1.产品名称=表2.产品名称
from t1 a
where exists(select 1 from t2 where 产品类型 = a.产品类型 and 产品名称 = a.产品名称)
from tb1 a
where exists(select 1 from tb2 where 产品类型 = a.产品类型 and 产品名称 = a.产品名称)