我的意思就是:有两个表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
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
except
select * from b
(select * from A)
except
(select * from B)
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