1. 程式人生 > >記錄:mysql中的case when|on duplicate key update|重複插入返回主鍵的用法

記錄:mysql中的case when|on duplicate key update|重複插入返回主鍵的用法

case_logo
在平時的開發中不免接觸到資料庫,這裡記錄一些平時開發中遇到的細節問題,與大家共勉。

mysql中的條件控制:case函式

在操作資料庫的開發中不免遇到一些類似if else的判斷,這時候就用到了Case函式,首先我們用網上用了好多次的例子來看看它的用法:

case when sex = '1' then '男'  
     when sex = '2' then '女'  
     else '其他' end

利用這個格式我們可以就可以完成類似if else的操作,比如:

SELECT
    SUM(
    case 
    when V.IN_OUT = '2' then -
AMOUNT when V.IN_OUT = '1' then AMOUNT end) AMOUNT FROM tb_financial

怎麼樣,很簡單吧!

mysql中重複插入時更新

為了防止資料重複插入報錯,我們可以讓重複插入主鍵相同的資料時改為更新這條資料。
我們使用mysql官網的例子:

INSERT INTO t1 (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE t1 SET c=c+1 WHERE a=1;

按照官網的說法,如果列a被宣告為UNIQUE幷包含該值 1,則這兩個語句具有類似的效果。當列b也是唯一的時候,則相當於下面這條sql:

UPDATE t1 SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;

但是,並不建議ON DUPLICATE KEY UPDATE在具有多個唯一索引的表上使用。

MyBatis+MySQL 返回插入的主鍵ID

在使用Mybatis想返回插入的主鍵ID也很簡單,只需要在insert的Mapper中新增useGeneratedKeys="true"和keyProperty="實體中主鍵屬性名"兩個屬性:

<insert id="InsertTBFinancial" useGeneratedKeys="true" keyProperty="id">
		INSERT
INTO Tb_financial (id, amount, comment) VALUES (#{id}, #{amount}, #{comment}) </insert>

這樣在呼叫此方法後實體中的主鍵值就會自動返回:

Financial financial = new Financial();  
financial.setId("chenzhou");  
financial.setAmount("xxxx");  
financial.setComment("測試插入資料返回主鍵功能");  
  
System.out.println("插入前主鍵為:"+financial.getId());  
userDao.insertAndGetId(financial);//插入操作  
System.out.println("插入後主鍵為:"+financial.getId());  

相關推薦

記錄mysqlcase when|on duplicate key update|重複插入返回用法

在平時的開發中不免接觸到資料庫,這裡記錄一些平時開發中遇到的細節問題,與大家共勉。 mysql中的條件控制:case函式 在操作資料庫的開發中不免遇到一些類似if else的判斷,這時候就用到了Case函式,首先我們用網上用了好多次的例子來看看它的用法:

避坑必看很詳盡的MyBatis返回自增實驗(包括插入或更新SQL語句insert on duplicate key update的自增返回情況)

目錄 (7)介面 5. 總結 本篇文章對MyBatis操作MySQL時自增主鍵返回情況進行詳細的實驗,給出不同情況下Mybatis返回自增主鍵的不同行為,僅基於實驗結果,不做原始碼分

on duplicate key update 重複插入時更新 使用

基本語法: INSERT INTO TABLE (a,c) VALUES (1,3) ON DUPLICATE KEY UPDATE c=c+1; (這裡a為主鍵) 這條sql相等於兩條sql: 1.INSERT INTO TABLE (a,c) VALUES (1,3) 2.U

mysql 的insert ....on duplicate key update問題

on duplicate key update 這個語句好用是非常好用,可以很只能的幫你實現,如果記錄存在則更新你已經設定過的需要更新的欄位,如果沒有該條記錄就插入該條記錄。     現在講講他的一些問題:       &nb

ON DUPLICATE KEY UPDATEmysql的INSERT語句用法

1、如果在INSERT語句後面帶上ON DUPLICATE KEY UPDATE 子句,而要插入的行與表中現有記錄的惟一索引或主鍵中產生重複值,那麼就會發生舊行的更新; 2、如果插入的行資料與現有表中記錄的唯一索引或者主鍵****不重複,則執行新紀錄插入操作。 示例: creat

Mysql 插入資料存在時執行update操作ON DUPLICATE KEY UPDATE

-- 建立表:test: CREATE TABLE `test` (   `objId` int(10) NOT NULL,   `orgId` int(10) NOT NULL,   `objName` varchar(50) NOT NULL,   PRIMARY KE

mysql的ON DUPLICATE KEY UPDATE在INSERT語句用法

1、如果在INSERT語句後面帶上ON DUPLICATE KEY UPDATE 子句,而要插入的行與表中現有記錄的惟一索引或主鍵中產生重複值,那麼就會發生舊行的更新; 2、如果插入的行資料與現有表中記

mysqlon duplicate key update與replace into

在往表裡面插入資料的時候,經常需要:a.先判斷資料是否存在於庫裡面;b.不存在則插入;c.存在則更新 一、replace into   前提:資料庫裡面必須有主鍵或唯一索引,不然replace into 會直接插入新資料,導致資料表裡面有重複資料   執行時先嚐試插入資

MySql避免重複插入記錄方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

本文章來給大家提供三種在mysql中避免重複插入記錄方法,主要是講到了ignore,Replace,ON DUPLICATE KEY UPDATE三種方法,各位同學可嘗試參考。案一:使用ignore關鍵字如果是用主鍵primary或者唯一索引unique區分了記錄的唯一性,避

記錄問題mysqldatetime型別欄位在後臺讀取與前端展示

1.資料庫欄位型別為datetime,model裡:@Column(name = "createtime", length = 20) private Date createTime;2.兩種將資料傳到前端的方法方法一:List<Map<String, Objec

MySQL出現唯一索引衝突,使用ON DUPLICATE KEY UPDATE

        在MySQL資料庫中,如果在insert語句後面帶上ON DUPLICATE KEY UPDATE 子句,而要插入的行與表中現有記錄的惟一索引或主鍵中產生重複值,那麼就會發生舊行的更新;如果插入的行資料與現有表中記錄的唯一索引或者主鍵不重複

MySql避免"重複插入記錄"的方法(INSERT ignore into,Replace into,ON DUPLICATE KEY UPDATE)

案一:使用ignore關鍵字 如果是用主鍵primary或者唯一索引unique區分了記錄的唯一性,避免重複插入記錄可以使用: 程式碼如下 複製程式碼 1 INSERT IGNORE INTO table_name (email, phone, us

mysql的insert ... on duplicate key update column=IF(條件,值1,值2 )

    mysql中的insert...on duplicate key update的用法注意點:1.確定唯一性索引欄位(如機構表中,機構編碼是唯一的,不可重複的)2.update 後面跟需要更新的欄位(只要唯一性欄位是重複了,則更新update後的欄位值)3.如果想增加限

mysql insert判斷記錄存不存在 存在即更新不存在即插入 DUPLICATE key update

當判斷一條記錄是否存在不是唯一的主鍵而是多個條件的時候就懵了啊。。 當這種情況出現時當然還是要用  DUPLICATE key update關鍵詞了  但是但是 是有前提條件的,,因為我們是三個條件判斷記錄是否存在,這個時候必須用到了聯合主鍵,,什麼事聯合主鍵 百度吧  語句

深入mysql "ON DUPLICATE KEY UPDATE" 語法的分析

入行 能說 問題 values cor () 功能 copy 導致 轉:http://www.jb51.net/article/39255.htmmysql "ON DUPLICATE KEY UPDATE" 語法如果在INSERT語句末尾指定了ON DUPLICATE K

MySQLcase then用法

sele null col log clas birt some sql light 1.查詢圖書價格,若價格為null,則顯示unknown,若價格為10到20, 則顯示10 to 20 SELECT price, CASE WHEN price=‘null‘ THE

MySql case when then else end 的用法

sta 結束 name cas ber sel 如果 user num MySql 中 case when then else end 的用法 解釋: SELECT case ----------

MYSQL的REPLACE和ON DUPLICATE KEY UPDATE使用

覆蓋 選項 insert pan ins ima pri details 匹配 REPLACE 我們在使用數據庫時可能會經常遇到這種情況。如果一個表在一個字段上建立了唯一索引,當我們再向這個表中使用已經存在的鍵值插入一條記錄,那將會拋出一個主鍵沖突的錯誤。當然,我們可能想用

mysqlcase用法

sql select 簡單 mman 但是 num 執行 res bytes 轉載請註明出處: 簡單CASE語句僅允許您將表達式的值與一組不同的值進行匹配。 為了執行更復雜的匹配,如範圍,您可以使用可搜索CASE語句。可搜索CASE語句等同於IF語句,但是它

mysql "ON DUPLICATE KEY UPDATE" 的使用

例子 lis 查看 字段名 style .sh eat 數據 foreach ON DUPLICATE KEY UPDATE 語法並不是SQL的標準語法,如果在句尾指定該語法,它會根據指定的主鍵或者唯一標示索引來更新數據庫的內容 具體的操作是想根據唯一標示查看數據庫是否存在