SQL 当记录不存在时插入insert if not exists 20

INSERTINTOclients(id,name,type)SELECT10345,'IBM','advertising'FROMclientsWHEREnotexis... INSERT INTO clients
(id, name, type)
SELECT 10345, 'IBM', 'advertising'
FROM clients
WHERE not exists (select * from clients
where id = 10345);

表是空的 语句执行成功 但是没添加进数据
在表了随便添加条数据 然后在执行 却可以添加进数据了呢?
要怎么修改?
上面打错个字

表是空的 语句执行成功 但是没添加进数据
在表里随便添加条数据 然后在执行 却可以添加进数据了呢?
要怎么修改?
展开
 我来答
x403879785
推荐于2016-06-21 · TA获得超过3839个赞
知道大有可为答主
回答量:1299
采纳率:100%
帮助的人:1174万
展开全部
表是空的当然添加不了数据,因为exists存在谓词返回的是布尔值TRUE和FALSE,你的select * from clientswhere id = 10345 是空值;那么WHERE not exists (select * from clientswhere id = 10345)的意思是限定条件 WHERE 不存在空值,但是事实上表里此时正是空,所以查询不符合WHERE条件,所以insert 也是空,就没记录了。

还有,你的语句
INSERT INTO clients(id, name, type)SELECT 10345, 'IBM', 'advertising'…
select 后面跟的不是字段名,而是值,为什么还要用INSERT INTO…SELECT ?
直接insert into…values(…)不就好了?
wy_1900
2012-03-20 · TA获得超过4503个赞
知道大有可为答主
回答量:4260
采纳率:63%
帮助的人:3404万
展开全部
sql导出建表语句的sql文件你看过吗?前面就是判断表是否存在,然后建表
就是那些if not exists 之类的,你照着改一下就行了,手头没有sql,没办法给你贴语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韦德forerver
推荐于2018-02-27
知道答主
回答量:20
采纳率:0%
帮助的人:30.5万
展开全部
INSERT INTO clients
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE not exists (select * from clients
where id = 10345);

这个可以实现
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micro0369
2012-03-19 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4064万
展开全部
因为表中没有数据,

insert into clients
select ...
FROM clients
当然没有数据返回,insert自然也就没有数据可以插入了。

这个好像必须用程度段,纯粹的sql语句还真实现不了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hu0829
2012-03-19 · TA获得超过2937个赞
知道大有可为答主
回答量:2251
采纳率:50%
帮助的人:2343万
展开全部
WHERE not exists (select * from clients
where id = 10345); 我觉得where not exists这有问题吧?exists是个栏位?后面怎么是select * from 呢?应该是指定一个栏位,WHERE not exists (select exists from clients where id = 10345)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式