当前位置: 代码迷 >> Sql Server >> AAAAA 求两个SQL语句 AAAA(要求支持Access数据库)解决思路
  详细解决方案

AAAAA 求两个SQL语句 AAAA(要求支持Access数据库)解决思路

热度:338   发布时间:2016-04-24 09:25:38.0
AAAAA 求两个SQL语句 AAAA(要求支持Access数据库)
有表A
AutoID CNID CN Name
1 101 魏 郭嘉
2 101 魏 许褚
3 101 魏 夏侯惇
4 102 蜀 张飞
5 102 蜀 赵云
6 103 吴 孙权
7 103 吴 陆逊
8 103 吴 鲁肃
9 104 南蛮 孟获
10 104 南蛮 祝融夫人
表B
UNID WCNID CN Name
SER23 4EW43 魏 曹操
DW325 4EW43 魏 郭嘉
XD534 4EW43 魏 徐庶
BF645 NHJ58 蜀 刘备
NF464 NHJ58 蜀 张飞
MK345 NHJ58 蜀 赵云
LM867 8645N 吴 孙权
OZ421 8645N 吴 鲁肃
PW795 02DE5 南蛮 孟获
UW249 UB56F 西晋 司马炎
AB关系表
CNID WCNID CN
101 4EW43 魏
102 NHJ58 蜀
103 8645N 吴
104 02DE5 南蛮
105 UB56F 西晋

要求查询出存在于A中而不存在于B中的数据(以A的后3列为基准)
CNID CN Name
101 魏 夏侯惇
102 蜀 赵云
103 吴 孙权
103 吴 陆逊
104 南蛮 祝融夫人
以及存在于B不存在于A中的数据(以A的后3列为基准)
CNID CN Name
101 魏 曹操
101 魏 徐庶
102 蜀 刘备
105 西晋 司马炎

要求分别用1条效率较高的SQL语句实现,支持Access语法(Access板块人气差了点),谢谢了先!
------解决思路----------------------
表 A 中有 “2 101 魏 许褚” ,表B中不存,你的结果是什么规则去掉的 ?
------解决思路----------------------
Access应该是兼容exists的
--语句1
SELECT A.CNID,A.CN,A.Name FROM A
JOIN [AB关系表] C ON A.CNID=C.CNID
WHERE NOT EXISTS(SELECT 1 FROM B WHERE A.Name=B.Name AND B.WCNID=C.WCNID)
ORDER BY A.CNID
--语句2
SELECT C.CNID,C.CN,B.Name FROM B
JOIN [AB关系表] C ON B.WCNID=C.WCNID
WHERE NOT EXISTS(SELECT 1 FROM A WHERE A.Name=B.Name AND A.CNID=C.CNID)
ORDER BY C.CNID
这边和Select 1没有任何关系,Select 2或3或*都可以,效果只是确认没有存在而已
  相关解决方案