2011-05-12 81 views
0

我在尋找像這樣的查詢:將自動增量插入第二列

id | int |自動增量 東西| varchar | 255

insert into `table` set something = concat('val', id); 

使表最終看起來像

1 | VAL1
2 | VAL2
3 | VAL3 ...

除了ID總是結束每行都爲val0

我該怎麼做?

+1

爲什麼你需要這樣做? 會不會像 SELECT id,concat('val',id)as FldName FROM table 爲您工作? – Sparky 2011-05-12 01:39:25

+0

這是一個過於簡化的例子,val實際上是一個代碼,所以實際的函數調用是'concat('1234',id,'567')'(1234和567是每次不同的長度不同的值)。 我基本上問,我怎麼能在同一個查詢中獲得insert_id。 – Hailwood 2011-05-12 01:42:14

+1

我想你將不得不做一個UPDATE觸發器後插入檢索新的ID。 – garnertb 2011-05-12 01:47:01

回答

3
mysql> describe concattest; 
+-------+------------------+------+-----+---------+----------------+ 
| Field | Type    | Null | Key | Default | Extra   | 
+-------+------------------+------+-----+---------+----------------+ 
| id | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| val | text    | YES |  | NULL |    | 
+-------+------------------+------+-----+---------+----------------+ 
2 rows in set (0.00 sec) 

mysql> INSERT INTO concattest (val) VALUES (concat('val', LAST_INSERT_ID())); 
Query OK, 1 row affected (0.06 sec) 

mysql> select * from concattest; 
+----+------+ 
| id | val | 
+----+------+ 
| 1 | val0 | 
+----+------+ 
1 row in set (0.00 sec) 

mysql> INSERT INTO concattest (val) VALUES (concat('val', LAST_INSERT_ID())); 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from concattest; 
+----+------+ 
| id | val | 
+----+------+ 
| 1 | val0 | 
| 2 | val1 | 
+----+------+ 
2 rows in set (0.00 sec) 

mysql> INSERT INTO concattest (val) VALUES (concat('val', LAST_INSERT_ID())); 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from concattest; 
+----+------+ 
| id | val | 
+----+------+ 
| 1 | val0 | 
| 2 | val1 | 
| 3 | val2 | 
+----+------+ 
3 rows in set (0.00 sec) 
+0

你也可以LAST_INSERT_ID()+ 1 :)所以val1出現,而不是val0 – Dathan 2011-05-12 02:35:05

+0

這也假定應用程序仍然使用相同的db連接 – Dathan 2011-05-12 02:41:33

+0

但LAST_INSERT_ID不是在第一次插入連接時是0? – Hailwood 2011-05-12 21:00:36