日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

insert语句让我学会的两个MySQL函数

發布時間:2023/11/27 生活经验 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 insert语句让我学会的两个MySQL函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們要保存數據到數據庫,插入數據是必須的,但是在業務中可能會出于某種業務要求,要在數據庫中設計唯一索引;這時如果不小心插入一條業務上已經存在同樣key的數據時,就會出現異常。

大部分的需求要求我們出現唯一鍵沖突時就更新這條數據,這時我們就可以用下面這條MySQL語句了:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE][INTO] tbl_name[PARTITION (partition_name [, partition_name] ...)][(col_name [, col_name] ...)]{VALUES | VALUE} (value_list) [, (value_list)] ...[ON DUPLICATE KEY UPDATE assignment_list]

這個就是MySQL官方的INSERT ... ON DUPLICATE KEY UPDATE語句語法

對于上面的?assignment_list?我們常常這樣寫:(假設a所在列是數據庫中的唯一主鍵)

INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6)ON DUPLICATE KEY UPDATEb=b,c=c;

但是在業務上,對于b和c列的值并不是所有的數值都是需要更新到數據庫里的,比如說:b列不能為null,為空就不更,c列不能小于0,小于0時就不更新,那么上面的語句我們就必須改改了:

INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6)ON DUPLICATE KEY UPDATEb= IF(VALUES(b), VALUES(b), b),c= IF(VALUES(c) > 0, VALUES(c), c);

我這次要說的就是這兩個函數if和values

下面就看官網怎么說了:

In an?INSERT ... ON DUPLICATE KEY UPDATE?statement, you can use the?VALUES(col_name)?function in the?UPDATEclause to refer to column values from the?INSERT?portion of the statement. In other words,?VALUES(col_name)?in the?UPDATE?clause refers to the value of?col_name?that would be inserted, had no duplicate-key conflict occurred. This function is especially useful in multiple-row inserts. The?VALUES()?function is meaningful only in the?ON DUPLICATE KEY UPDATE?clause of?INSERT?statements and returns?NULL

If?expr1?is?TRUE?(expr1?<> 0?and?expr1?<> NULL),?IF()?returns?expr2. Otherwise, it returns?expr3.

對于if函數來說,就是根據條件二選一了,沒啥可說的,

對于values函數來說,只有在on duplicate key update語句里才有意義,而且返回值,是你要插入的數值,而不是已經在數據庫里的數值。

隨便發現了南洋理工的sql教程,很贊:https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_Beginner.html

參考

insert語法

if函數

values函數

轉載于:https://www.cnblogs.com/halu126/p/8024379.html

總結

以上是生活随笔為你收集整理的insert语句让我学会的两个MySQL函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。