为什么用not in不行呢

andysunlp 2004-11-17 01:22:00
我想把表aa中的数据导入到bb中
用insert aa(ggxh,cpbh) from bb(ggxh,cpbh)
where (select aa.ggxh not in bb.ggxh)
就不行呢?
大家给点意见,加急!
...全文
98 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yanglimei 2004-11-17
ggxh是一个什么值,它可以为空吗?
insert aa(ggxh,cpbh) select ggxh,cpbh from bb
where ggxh not in (select ggxh form aa where ggxh is not null)
回复
zzxiaoma 2004-11-17
insert aa(ggxh,cpbh) select ggxh,cpbh from bb
where bb.ggxh not in (select ggxh form aa)
回复
davorsuker39 2004-11-17
IN
确定给定的值是否与子查询或列表中的值相匹配。

语法
test_expression [ NOT ] IN
(
subquery
| expression [ ,...n ]
)

参数
test_expression

是任何有效的 Microsoft® SQL Server™ 表达式。

subquery

是包含某列结果集的子查询。该列必须与 test_expression 有相同的数据类型。

expression [,...n]

一个表达式列表,用来测试是否匹配。所有的表达式必须和 test_expression 具有相同的类型。

结果类型
布尔型

结果值
如果 test_expression 与 subquery 返回的任何值相等,或与逗号分隔的列表中的任何 expression 相等,那么结果值就为 TRUE。否则,结果值为 FALSE。

使用 NOT IN 对返回值取反。

示例
A. 对比 OR 和 IN
下面的示例选择名称和州的列表,列表中列出所有居住在加利福尼亚、印地安纳或马里兰州的作者。

USE pubs

SELECT au_lname, state
FROM authors
WHERE state = 'CA' OR state = 'IN' OR state = 'MD'

但是,也可以使用 IN 获得相同的结果:

USE pubs

SELECT au_lname, state
FROM authors
WHERE state IN ('CA', 'IN', 'MD')

以下是上面任一查询的结果集:

au_lname state
-------- -----
White CA
Green CA
Carson CA
O'Leary CA
Straight CA
Bennet CA
Dull CA
Gringlesby CA
Locksley CA
Yokomoto CA
DeFrance IN
Stringer CA
MacFeather CA
Karsen CA
Panteley MD
Hunter CA
McBadden CA

(17 row(s) affected)

B. 将 IN 与子查询一起使用
下面的示例在 titleauthor 表中查找从任一种书得到的版税少于 50% 的所有作者的 au_ids,然后从 authors 表中选择 au_ids 与 titleauthor 查询结果匹配的所有作者的姓名。结果显示有一些作者属于得到的版税少于 50% 的一类。

USE pubs
SELECT au_lname, au_fname
FROM authors
WHERE au_id IN
(SELECT au_id
FROM titleauthor
WHERE royaltyper < 50)

下面是结果集:

au_lname au_fname
---------------------------------------- --------------------
Green Marjorie
O'Leary Michael
Gringlesby Burt
Yokomoto Akiko
MacFeather Stearns
Ringer Anne

(6 row(s) affected)

C. 将 NOT IN 与子查询一起使用
NOT IN 将找到那些与值列表中的项目不匹配的作者。下面的示例查找至少有一种书取得不少于 50% 的版税的作者姓名:

USE pubs
SELECT au_lname, au_fname
FROM authors
WHERE au_id NOT IN
(SELECT au_id
FROM titleauthor
WHERE royaltyper < 50)

下面是结果集:

au_lname au_fname
---------------------------------------- --------------------
White Johnson
Carson Cheryl
Straight Dean
Smith Meander
Bennet Abraham
Dull Ann
Locksley Charlene
Greene Morningstar
Blotchet-Halls Reginald
del Castillo Innes
DeFrance Michel
Stringer Dirk
Karsen Livia
Panteley Sylvia
Hunter Sheryl
McBadden Heather
Ringer Albert
回复
hwcqboy 2004-11-17
insert aa(ggxh,cpbh) select ggxh,cpbh from bb
where ggxh not in (select ggxh form aa)
回复
davorsuker39 2004-11-17
insert aa(ggxh,cpbh)
Select ggxh,cpbh from bb
where not exists(select * from aa where ggxh=bb.ggxh)
回复
WangZWang 2004-11-17
insert Into aa(ggxh,cpbh)
Select ggxh,cpbh from bb
where not exists(select * from aa where ggxh=bb.ggxh)
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2004-11-17 01:22
社区公告
暂无公告