我的意思就是:有两个表A和B,B表的数据是来自A表,是A表的一部分,我想做的就是:查询出来自A表的数据,查询出的数据与B表的数据不相同,我写的就是这个,不过有点慢,有什么快的一点的方法:
SELECT     RTRIM(xm) AS jsxm, jsbh
FROM         dbo.zjsxx
WHERE     (xm NOT LIKE '%*%') AND (NOT EXISTS
                          (SELECT     jsbh
                            FROM          (SELECT     TOP 100 PERCENT dbo.by_js.jsbh
                                                    FROM          dbo.by_js INNER JOIN
                                                                           dbo.zjsxx AS zjsxx_1 ON dbo.by_js.jsbh = zjsxx_1.jsbh INNER JOIN
                                                                           dbo.by_njb ON dbo.by_js.nj = dbo.by_njb.nj
                                                    WHERE      (dbo.by_js.zydm = @zydm) AND (dbo.by_njb.sd = '1')
                                                    ORDER BY zjsxx_1.xm) AS derivedtbl_1
                            WHERE      (dbo.zjsxx.jsbh = jsbh)))
ORDER BY xm

解决方案 »

  1.   

    select * from a 
    except 
    select * from b
      

  2.   


    (select * from A)
    except
    (select * from B)
      

  3.   

    SELECT RTRIM(xm) AS jsxm, jsbh
    FROM  dbo.zjsxx
    WHERE xm NOT LIKE '%*%'
        AND NOT EXISTS(
    SELECT jsbh
    FROM (
    SELECT dbo.by_js.jsbh
    FROM dbo.by_js 
    INNER JOIN dbo.zjsxx AS zjsxx_1 
    ON dbo.by_js.jsbh = zjsxx_1.jsbh 
    INNER JOIN dbo.by_njb 
    ON dbo.by_js.nj = dbo.by_njb.nj
    WHERE (dbo.by_js.zydm = @zydm) AND (dbo.by_njb.sd = '1')
    ) AS derivedtbl_1
    WHERE (dbo.zjsxx.jsbh = jsbh))
    ORDER BY xmTRY