access求差集sql语句
答案:1 悬赏:60 手机版
解决时间 2021-04-05 04:58
- 提问者网友:疯子也有疯子的情调
- 2021-04-04 15:33
access求差集sql语句
最佳答案
- 五星知识达人网友:青灯有味
- 2021-04-04 16:27
1)ACCESS数据库查询对象,一次只允许运行一条SQL语句,而题主的查询截图里有两条SQL语句,这样自然就会报错。
2)删除B表中与A表中字段ID相同的记录,请参考下列SQL语句:
delete from B where exists
(select 1 from from A where A.ID=B.ID);3)求A表中与B表的差集(非交集)
写法一, 利用非存在子句进行判断筛选
select * from A where not exists
(select 1 from B where B.ID=A.ID)写法二 ,利用左连接出现的空值进行判断筛选(这里假设两表的字段ID都是唯一的,否则B表得实施去除重复项操作)
select A.* from A left join B on A.ID=B.ID where B.ID is null;注意:
写法一,在ID字段有索引的情况下运行效率很高,可作为首选使用,但是如果没有索引可利用的话,在大数据表的情况下运行效率很渣,应避免使用,这时推荐所使用写法二。
写法二 ,在有索引的情况下运行速度要比写法一慢。但是在没索引可利用时,碰到大数据表,其运行效率要比写法一好很多。
追问抱歉因为我真的没任何基础 还想确认一下 我求B-A 也就是图中红色的部分 字段没有索引 直接输入你给的3)中的写法二就可以是吗 麻烦您了
追答那就得A、B表反过来写,也就是求B表中与A表的非交集。
select B.* from B left join A on B.ID=A.ID where A.ID is null;
如果表名和字段名与实际不一致,上述语句中的表名和字段名换成实际的名字就可以了。追问啊成功了 太感谢您了 我真是得学习一下了 感谢感谢
2)删除B表中与A表中字段ID相同的记录,请参考下列SQL语句:
delete from B where exists
(select 1 from from A where A.ID=B.ID);3)求A表中与B表的差集(非交集)
写法一, 利用非存在子句进行判断筛选
select * from A where not exists
(select 1 from B where B.ID=A.ID)写法二 ,利用左连接出现的空值进行判断筛选(这里假设两表的字段ID都是唯一的,否则B表得实施去除重复项操作)
select A.* from A left join B on A.ID=B.ID where B.ID is null;注意:
写法一,在ID字段有索引的情况下运行效率很高,可作为首选使用,但是如果没有索引可利用的话,在大数据表的情况下运行效率很渣,应避免使用,这时推荐所使用写法二。
写法二 ,在有索引的情况下运行速度要比写法一慢。但是在没索引可利用时,碰到大数据表,其运行效率要比写法一好很多。
追问抱歉因为我真的没任何基础 还想确认一下 我求B-A 也就是图中红色的部分 字段没有索引 直接输入你给的3)中的写法二就可以是吗 麻烦您了
追答那就得A、B表反过来写,也就是求B表中与A表的非交集。
select B.* from B left join A on B.ID=A.ID where A.ID is null;
如果表名和字段名与实际不一致,上述语句中的表名和字段名换成实际的名字就可以了。追问啊成功了 太感谢您了 我真是得学习一下了 感谢感谢
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯