mysql insert exists

來源:互聯網
上載者:User

標籤:code   收藏   splay   null   用戶端   方案   none   sts   .com   

 

情景如下:

  "今日前端忽然說句, 我需要做個判斷, 不能重複收藏, 我猶如頸有寒冰不寒而慄, 於是思考我該怎麼做?為什麼她都思考到了我沒有思考到這是我的工作啊"

  思考後得到三種解決方案:

    1. 兩條sql, 然後通過第一條sql判斷

    2. 一條sql, insert 中使用exists方式(暫時不會,下面講解)

    3. 預存程序

 

  後請教公司一同事,得到結論, 如果是兩個用戶端同時操作就採用預存程序, 如果不是, 那麼第一種第二種都ok, 後決定採用方案2

  

INSERT INTO table(column1,column2,column3 ...columnN)  SELECT value1,value2,value3 ...valueN  FROM dual  WHERE NOT EXISTS(        SELECT *        FROM table        WHERE value = ?  );  
sql結構

 

INSERT INTO content (      detail,      status,      beginTime,      endTime)   SELECT      @detail,      1,      NULL,      NULL  FROM DUAL      WHERE NOT EXISTS(          SELECT contentId           FROM content           WHERE detail[email protected]);  
sql樣本

dual是為了構建查詢語句而存在的表,Oracle中很常見,配合INSERT ... SELECT構建成我們需要的表,並指定了資料項目. 
EXISTS通過這個判斷是否存在的函數,就免去了我們做IF-ELSE的冗繁操作

 

發現自己的sql還有漫長的路要走...

mysql insert exists

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.