设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5639|回复: 11
打印 上一主题 下一主题

[查询] 请教sql语句,错哪了?

[复制链接]
跳转到指定楼层
1#
发表于 2010-12-30 20:30:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DELETE 表.*, 表2.选择
FROM 表1 INNER JOIN 表2 ON 表1.编号 = 表2.编号
WHERE (((表2.选择)=-1));

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享1 分享淘帖1 订阅订阅
2#
发表于 2010-12-30 20:40:46 | 只看该作者
DELETE 只能同时对一个表进行操作
3#
发表于 2010-12-31 01:49:32 | 只看该作者
本帖最后由 roych 于 2011-8-31 20:20 编辑

应该改为子查询:
  1. DELETE 表.*, 表1.选择, 表1.编号
  2. FROM 表1
  3. WHERE (((表1.选择) In (select 表2.选择 from 表2 where 表2.选择=-1)) AND ((表1.编号) In (select 表2.编号 from 表2)));
复制代码
两个月之前我也遇到过这个问题,在这里提问居然没人回答~~汗,后来还是自己摸索出来的~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
发表于 2010-12-31 09:47:00 | 只看该作者
roych 发表于 2010-12-31 01:49
应该改为子查询:
两个月之前我也遇到过这个问题,在这里提问居然没人回答~~汗,后来还是自己摸索出来的~~ ...

没那么复杂吧?这样应该就可以了:
DELETE *
FROM 表1
WHERE dlookup("选择","表2","编号=" & [编号])=-1;
5#
发表于 2010-12-31 09:58:38 | 只看该作者
todaynew 发表于 2010-12-31 09:47
没那么复杂吧?这样应该就可以了:
DELETE *
FROM 表1

HoHo,之前没想过用函数可以轻易解决,固守在字段之间。学习了……
向版主致敬!
6#
发表于 2010-12-31 10:07:17 | 只看该作者
roych 发表于 2010-12-31 09:58
HoHo,之前没想过用函数可以轻易解决,固守在字段之间。学习了……
向版主致敬!

用in查询速度会很慢,特别是表2记录条数多的时候。
7#
发表于 2010-12-31 10:16:05 | 只看该作者
本帖最后由 todaynew 于 2010-12-31 10:18 编辑
sxgaobo 发表于 2010-12-30 20:30
DELETE 表.*, 表2.选择
FROM 表1 INNER JOIN 表2 ON 表1.编号 = 表2.编号
WHERE (((表2.选择)=-1));


诚如ZYP同志所论,DELETE不能针对两个及以上的表进行,因此可以这样写:
DELETE 表1.*
FROM 表2 INNER JOIN 表1 ON 表2.编号=表1.编号
WHERE (((表2.选择)=-1));

三种写法以7楼效率最好,4楼次之,3楼最差。
8#
发表于 2010-12-31 11:38:44 | 只看该作者
todaynew 发表于 2010-12-31 10:16
诚如ZYP同志所论,DELETE不能针对两个及以上的表进行,因此可以这样写:
DELETE 表1.*
FROM 表2 INNE ...

确实是第7楼的方法最佳.
9#
 楼主| 发表于 2010-12-31 13:47:54 | 只看该作者
谢谢各位的关注!知识就是这样积累的啊
10#
发表于 2011-1-2 21:01:21 | 只看该作者
7楼正解,其它都不咋地。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 23:04 , Processed in 0.109162 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表