方法一:insert into on duplicate key update
舉個例子,欄位a被定義為unique,並且原資料庫表table中已存在記錄(2,2,9)和(3,2,1),如果插入記錄的a值與原有記錄重複,則更新原有記錄,否則插入新行:
insert
into
table
(a ,b,c)
values(1
,2,3
),(2
,5,7
),(3
,3,6
),(4
,8,2
)on duplicate
keyupdate b
=values
(b );
以上sql語句的執行,發現(2,5,7)中的a與原有記錄(2,2,9)發生唯一值衝突,則執行on duplicate key update,將原有記錄(2,2,9)更新成(2,5,9),將(3,2,1)更新成(3,3,1),插入新記錄(1,2,3)和(4,8,2)
方法二:建立儲存過程
create procedure name()
if exists(
select
1
from
表
where
id = @id)
begin
update
表
set
xx= xx
where
id = @id
end
else
begin
insert
表
values
(xx...)
end
Mysql,資料庫中明明有這條資料卻查不出來?
資料庫裡看到有113.107.112.3這條資料卻不能用select from newiptemp where newip 113.107.112.3 查詢出來。使用select from newiptemp where newip like 113.107.112.3 就能查詢出來。因為裡面還有看...
sql如何在為插入前,查詢到這條資料
在資料庫操作中,我們在某條資料commit之前,是查詢不到該資料的,當資料量很大時,我們為了提高效率,不可能每條commit一次,太費時。所以我們選擇乙個合適的條數,比如200條提交一次。但有時候我們在建立這條單據的時候,還需要用到他在資料庫中的資料,比如他的id,使用他的id去關聯另外一張表。如下...
SQL更新多條資料
問題 有兩個不同的表,其中都有乙個編號的字段,而且儲存的內容是相同的,需要將一張表中的另外一些字段依據編號去與另乙個表中編號對應來更新到另乙個表中。方法 由於在sql中是不支援同時更新多條包含編號的資料的,所以當我們要更新多條資料的時候我們需要進行逐條的更新操作,這個時候我們需要用到游標。游標是只能...