<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                來源:http://blog.chinaunix.net/uid-9950859-id-99088.html 看程序竟然發現Mysql有這個功能! 今天寫程序,新發現……………………,相當不錯^_^,省略了很多功夫,每天1G多的日志!! MySQL 自4.1版以后開始支持INSERT … ON DUPLICATE KEY UPDATE語法,使得原本需要執行3條SQL語句(SELECT,INSERT,UPDATE),縮減為1條語句即可完成。 `INSERT ... ON DUPLICATE KEY` UPDATE,當插入的記錄會引發主鍵沖突或者違反唯一約束時,則使用UPDATE更新舊的記錄,否則插入新記錄。 例如ipstats表結構如下: ~~~ CREATE TABLE ipstats ( ip VARCHAR(15) NOT NULL UNIQUE, clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' ); ~~~ 原本需要執行3條SQL語句,如下: ~~~ IF (SELECT * FROM ipstats WHERE ip='192.168.0.1') { UPDATE ipstats SET clicks=clicks+1 WHERE ip='192.168.0.1'; } else { INSERT INTO ipstats (ip, clicks) VALUES ('192.168.0.1', 1); } ~~~ 而現在只需下面1條SQL語句即可完成: `INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1;` 注意,要使用這條語句,前提條件是這個表必須有一個唯一索引或主鍵。 再看一例子: ~~~ mysql> desc test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | uid | int(11) | NO | PRI | | | | uname | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> select * from test; +-----+--------+ | uid | uname | +-----+--------+ | 1 | uname1 | | 2 | uname2 | | 3 | me | +-----+--------+ 3 rows in set (0.00 sec) mysql> INSERT INTO test values ( 3,'insertName' ) -> ON DUPLICATE KEY UPDATE uname='updateName'; Query OK, 2 rows affected (0.03 sec) mysql> select * from test; +-----+------------+ | uid | uname | +-----+------------+ | 1 | uname1 | | 2 | uname2 | | 3 | updateName | +-----+------------+ 3 rows in set (0.00 sec) mysql> create index i_test_uname on test(uname); Query OK, 3 rows affected (0.20 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> INSERT INTO test VALUES ( 1 , 'uname2') -> ON DUPLICATE KEY UPDATE uname='update2records'; Query OK, 2 rows affected (0.00 sec) mysql> select * from test; +-----+----------------+ | uid | uname | +-----+----------------+ | 2 | uname2 | | 1 | update2records | | 3 | updateName | +-----+----------------+ 3 rows in set (0.00 sec) ~~~ 插入時會與兩條記錄發生沖突,分別由主鍵和唯一索引引起。但最終只UPDATE了其中一條。這在手冊中也說明了,有多個唯一索引(或者有鍵也有唯一索引)的情況下,不建議使用該語句。 create table xx (sad,xasd,asda,primary key(a,x,a));就可以用了,注意一定要有由主鍵和唯一索引^_^
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看