关于插入的问题 mytable 表机构id,name1,name2--我想插入的时候,如果id=1且name1=‘张三’不存在的时候才插入 insert into mytable values(1,'张三','') where?--条件如上的时候不插入 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建个临时表,用merge into来处理 insert into mytableselect 1,'张三','' from dual where (select count(*) from mytable where **='张三')=0 插入后面加where条件-- 至于这样么。。 如果要那样的话 先从表里面查出是否存在id=1 name1='张三'的数据 没有就插入 有的话就不做 insert into mytable select 1,'张三','' from dual where (select nvl(count(1),0) from mytable where name1='张三')<=0 insert into mytable values(1,'张三','') where (select 1 from mytable where id = 1 and name = '张三')=0 SQL> SELECT * FROM test ; A B--- ---- 14 0 SQL> SQL> INSERT INTO test 2 SELECT 14,0 FROM dual WHERE (SELECT COUNT(*) FROM test WHERE a=14)=0 3 ; 0 rows inserted SQL> SQL> SELECT * FROM test ; A B--- ---- 14 0 SQL> SQL> INSERT INTO test 2 SELECT 14,0 FROM dual WHERE (SELECT COUNT(*) FROM test WHERE a=14)=0 3 ; 0 rows inserted SQL> 注意是0 rows inserted 当然用merge是最好的SQL> SELECT * FROM test ; A B--- ---- 14 0 SQL> SQL> merge into test a 2 using (select 14 a,0 b from dual)b 3 on (a.a=b.a) 4 when not matched then insert (a.a,a.b)values(b.a,b.b); DoneSQL> select * from test; A B--- ---- 14 0 SQL> 各位同志们,大家好,麻烦大家试试如果id=1 and name1='',看看能不能插入。我测试能反复插入,但是如果id=1 and name='张三' 是不能反复插入的。 谢谢。我才知道有merge语句。 基于时间点的恢复代码语法出错,错在那 如何获取出错的SQL语句 C# 用process导入dmp文件 重定向输出流后怎么不能获取控制台信息? 数据库的增删改查操作数据慢,都有哪些原因? 求建立表约束关系图的工具或方法 用net8建立网络连接,报错! 字段数目限制?急!!! 触发器问题,急,在线等候 如何将数据库的触发器导出和导入 sql按照要求修改雇员的福利comm列 oracle 热备份表空间的文件 如何用于恢复 问一个简单的权限问题
select 1,'张三','' from dual
where (select count(*) from mytable where **='张三')=0
至于这样么。。
如果要那样的话 先从表里面查出是否存在id=1 name1='张三'的数据
没有就插入 有的话就不做
insert into mytable select 1,'张三','' from dual where (select nvl(count(1),0) from mytable where name1='张三')<=0
insert into mytable values(1,'张三','')
where (select 1 from mytable where id = 1 and name = '张三')=0
A B
--- ----
14 0
SQL>
SQL> INSERT INTO test
2 SELECT 14,0 FROM dual WHERE (SELECT COUNT(*) FROM test WHERE a=14)=0
3 ;
0 rows inserted
SQL>
A B
--- ----
14 0
SQL>
SQL> INSERT INTO test
2 SELECT 14,0 FROM dual WHERE (SELECT COUNT(*) FROM test WHERE a=14)=0
3 ;
0 rows inserted
SQL>
注意是0 rows inserted
SQL> SELECT * FROM test ;
A B
--- ----
14 0
SQL>
SQL> merge into test a
2 using (select 14 a,0 b from dual)b
3 on (a.a=b.a)
4 when not matched then insert (a.a,a.b)values(b.a,b.b);
DoneSQL> select * from test;
A B
--- ----
14 0
SQL>