MySQL 儲存過程實現 MERGE INTO

2021-10-04 23:24:53 字數 1039 閱讀 9038

編寫儲存過程中,經常遇到的問題就是:在同步某項資料時,我們需要做到如果庫里之前有改資訊,則更新,如果沒有則插入。在oracle儲存過程中我們可以通過merge into 來實現。但是mysql資料庫儲存過程不支援merge into。那我們應該如何實現呢?

首先我們看下在oracle資料庫中merge into的語法

merge into [target-table] a using [source-table sql] b on([conditional expression] and [...]...)

when matched then

[update sql]

when not matched then

[insert sql]

例子:

merge into a_merge a using (select b.aid,b.name,b.year from b_merge b) c on (a.id=c.aid)

when matched then

update set a.year=c.year

when not matched then

insert(a.id,a.name,a.year) values(c.aid,c.name,c.year);

commit;

mysql資料庫儲存過程中如何實現merge into功能

-- 當前資料做 對比 如果b表存在則更新時間 不存在則插入

if not exists ( select 1 from test_b where id = _id and name=_name )

then

insert into test_b (id, name,operatime) values (_id,_name,now());

else

update test_b set operatime = now() where id = _id and name=_name;

end if;

mysql儲存登入 MYSQL儲存過程實現使用者登入

create definer root function uc session login re son json,srvjson json returnsjson language sqlnotdeterministiccontainssql sql security definer commen...

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...

mysql 儲存過程 mysql 儲存過程

建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...