Sql Merge語法 新增或更新或刪除資料

來源:互聯網
上載者:User

如果想要沒有資料時新增,有資料時更新或刪除,以前要先下Select來判斷Insert或Update或Delete,而Merge語法可節省這些步驟,一個語法全包了。

 

Merge是定義在Sql 2003的標準中

支援的DBMS

  • Oracle9i以上
  • MS SQL Server 2008 以上(慢了好幾年)。
  • MySql 5.0 以上

每一個DBMS都有其擴充的地方,請自行參考。

 

語法

MERGE INTO table_name USING table_name ON ( condition)

WHEN MATCHED THEN UPDATE SET column1 = value1 [, column2 = value2 ...]

WHEN NOT MATCHED THEN INSERT ( column1 [, column2 ...]) VALUES ( value1 [, value2 ...])

 

範例

1.有資料更新,沒資料新增

MERGE TableA AS target
USING (SELECT 'TestValue' ) AS source (ColumnA)
ON (target.ColumnA = source.ColumnA )
WHEN MATCHED THEN UPDATE SET ColumnA = 'TestValue'
WHEN NOT MATCHED BY TARGET THEN INSERT (ColumnA , ColumnB ) VALUES ('TestValue', 'TestValue')

2.有資料刪除,沒資料新增

MERGE TableA AS target
USING (SELECT 'TestValue' ) AS source (ColumnA)
ON (target.ColumnA = source.ColumnA )
WHEN MATCHED THEN DELETE
WHEN NOT MATCHED BY TARGET THEN INSERT (ColumnA , ColumnB ) VALUES ('TestValue', 'TestValue')

參考資料

Merge (SQL) - Wikipedia

MERGE (Transact-SQL)

Permanent Link to MERGE command enhancements in Oracle 10g

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.