❶ 这个mysql 存储过程 哪里有问题 如果存在记录就 更新 count + 1,不存在就插入
searchrecord 表里面的 username 的数据类歼察型毁改派, 是 char(32) ?
searchrecord 表里面的 type 的数据类型, 是 char(16) ?
还有就是你调用存储过程的时候, 是怎么调用的?
还有就是
select count(*),id,count INTO p_isexist,p_id,p_count from searchrecord Where username = usernamep And type = typep;
这个 sql 语句上面, 有点问题。
可以纤贺修改为
select count(*) INTO p_isexist from searchrecord Where username = usernamep And type = typep;
然后后面的
update searchrecord set opdate=NOW(),count = p_count +1 where id = p_id
修改为
update searchrecord set opdate=NOW(),count = count + 1 where username = usernamep And type = typep;
❷ sql 编辑中,要是有数据就update,数据为空就insert into 怎么实现,下图
不知道你什么数据库.
Oracle 9i、DB2 9、 SQL Server 2008 可以使用 MERGE 语句山冲和
来完成 “数据逗盯已存在就 UPDATE , 数据不存在就 INSERT ”
如果判碧你是 MySQL 数据库, 那么可以使用 replace into 语句。
❸ mysql更新字段记录没有则添加
请把ID字段去肆桥陆除,然后用replace就行了
即:裂顷replace a SET score=score+10 WHERE name='Jack'
注以消渣上指令没有验证,请自行修改
❹ mysql 有就更新没有就插入
使用insert into掘岩 on plicate key update
sql语句为
insertintotableA(`key1`,`key2`,`F1`,`F2`...)values('A','AA',5,5,...)onplicate脊山key判野御update`F1`=`F1`+values(`F1`),`F2`=`F2`+values(`F2`)....
❺ sql server 判断记录存在更新不存在插入
写个存储过程吧。或者建个主键吧,这样插入就不会插入重复的数据了。
❻ SQL语句 存在就更新不存在就插入
在向表中插入数据的时候,经常遇到这样的情况:
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,
replace into
SQL%NOTFOUND 是SQL中的一个隐式游标,在增删查改的时候自动册山打开,如果有至少有一条记录受影响,都会返回false,这就就巧妙的构思出了第一种解决方案:
当Oracle语句执行时,发生了异常exception进行处理
当往表中插入一条数据,因为表中有主键约束,如果插入的数据在表中已经存在,则会抛出异常,在异常抛出后进行修改。
al是一个虚拟表,用配侍来构成select的语法规则,oracle保证al里面永远只有一条记录。
先声明一个变量培姿吵t_count,表al表的值赋给t_count,如果这个值小于1,表示记录不存在,进行插入操作,反之,存在就进行修改操作。
先查找要插入的记录是否存在,存在则修改,不存在则插入。具体的实现如下:
先来看一下merge的语法,
❼ mysql一条语句判断是否存在记录,有更新,没有插入
#定义一个变量来保存该记录铅和是否存在
declare num int;
#这条sql,就是查询对应的记录有多少条,早激卖注意 into num 这两句话,就是把count(*) 查出的值,赋给到num中
select count(*) into num from t_count_view where TO_DAYS(now())=TO_DAYS(day);
#接下来的就是判断了,注意,判断是否等于,只有一个等于号
if(num=0)
#等于号之后,还要写一陆逗个Then,代表条件成立后要执行的sql
Then
insert into t_count_view(view_people,view_num,day)values(1,1,now());
#else可以直接用,不需要加then
else
update t_count_view set view_people=view_people+1;
#但是当if使用完之后,一定要写end if,代表着if的条件判断结束了
end if;
END
❽ 用sql语句更新一条记录,如果不存在就插入,怎么写
PLSQL 的写法:
begin
update tablename
set xxx=values;
exception
when no_data_found then
insert into tablename
valuse();
end ;
❾ SQL在更新数据时,先判断数据是否存在。存在就更新update,不存在就插入insert。
先判断是否存在,存在就更新
IF EXISTS(SELECT 1 FROM sys_emp a,inserted b join hr_emp_title c on b.empid = c.empid)
BEGIN
update c
set c.title_code = b.title_code
from inserted b join hr_emp_title c on b.empid = c.empid
END
不存在就插入
ELSE
BEGIN
insert into hr_emp_title(empid,title_code) select empid ,title_code from inserted;
END
❿ sql,更新表内容,‘卡号’这个字段里面的内容存在就更新内容,卡号不存在就插入新的记录
1.把execl表全部倒入到数据库中的一个临时表 tab1中,要雀御更新的表tab2
2.写sql更新
第一步更新物岁大
update tab2 set ?????
from tab2 aa,
(select * from tab1
where 卡号 in (select 卡号 from tab2)) bb
where aa.卡号=bb.卡号
第二步插入
insert into tab2
select * from tab1
where 卡号 not in (select 卡号罩竖 from tab2)