Mysql 語句之 插入記錄 instert
單行插入
| 代碼如下 |
複製代碼 |
insert into 表名(欄位名,欄位名, … ) values( 欄位值,欄位值,…); insert into A(A_e,A_f,A_a) values(‘字元’,10,01); |
多行插入
| 代碼如下 |
複製代碼 |
insert into 表名 values( 欄位值,欄位值,…),( 欄位值,欄位值,…); insert into A values(‘字元’,10,01),(‘字元’,10,01); |
插入記錄後返回該記錄ID
Mysql提供了一個LAST_INSERT_ID()的函數。
| 代碼如下 |
複製代碼 |
LAST_INSERT_ID() (with no argument) returns the first automatically generated value that was set for an AUTO_INCREMENT column by the most recently executed INSERT or UPDATE statement to affect such a column. For example, after inserting a row that generates an AUTO_INCREMENT value, you can get the value like this: mysql> SELECT LAST_INSERT_ID(); -> 195 |
簡單說來,就是這個函數將返回插入的那條記錄在表中自增的那個欄位的值,一般我們都給那個自增欄位命名為ID。這樣就可以返回剛插入的記錄的ID值了。
一個簡單的例子:
| 代碼如下 |
複製代碼 |
$query="INSERT INTO `testtable` (`clou1`,`clou2`) VALUES ('testvalue','test')"; mysql_query($query); $query="SELECT LAST_INSERT_ID()"; $result=mysql_query($query); $rows=mysql_fetch_row($result); echo $rows[0];
|
mysql 記錄不存在時插入 記錄存在則更新的實現方法
| 代碼如下 |
複製代碼 |
mysql> truncate `200702`; Query OK, 0 rows affected (0.01 sec) mysql> select * from `200702`; Empty set (0.01 sec) mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000; Query OK, 1 row affected (0.00 sec)
|
當然,建表的時候,千萬別忘記了給domain做一個unique
UNIQUE KEY `domain` (`domain`,`report_date`)