表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.   

    select *
    from tb1 a 
    where exists(select 1 from tb2 where 产品类型 = a.产品类型 and 产品名称 = a.产品名称)
      

  2.   

    ------------------------------------------------------------------------
    -- 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 
      

  3.   

    select a.* from tb1 a join tb2 b on b.产品类型 = a.产品类型 and b.产品名称 = a.产品名称
      

  4.   

    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' select distinct TT.设备,TT.产品类型,TT.产品名称 from T1 TT inner join T2 t on TT.产品类型=t.产品类型 and TT.产品名称=t.产品名称
      

  5.   

    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 行受影响)
      

  6.   

    Another script For youSELECT  T1.* from T1 
    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
      

  7.   


    OrSELECT  T1.* from T1 
    INNER JOIN 
    (SELECT DISTINCT T2.* FROM T2)T3
    ON T1.产品类型=T3.产品类型 AND T1.产品名称=T3.产品名称
      

  8.   

    select distinct * from 表1 inner jion 表2 on 表1.产品类型=表2.产品类型 and 表1.产品名称=表2.产品名称
      

  9.   


    select distinct * from 表1 inner jion 表2 on 表1.产品类型=表2.产品类型 and 表1.产品名称=表2.产品名称
      

  10.   

    select distinct * from 表1 inner jion 表2 on 表1.产品类型=表2.产品类型 and 表1.产品名称=表2.产品名称
      

  11.   

    select *
    from t1 a 
    where exists(select 1 from t2 where 产品类型 = a.产品类型 and 产品名称 = a.产品名称)
      

  12.   

    ect *
    from tb1 a 
    where exists(select 1 from tb2 where 产品类型 = a.产品类型 and 产品名称 = a.产品名称)