0

我想在 tm_matrix 上触发以下查询,但给了我以下错误

mysql> INSERT INTO tm_matrix (VDT,VID)VALUES(replace(left(now(),10),'-',''),(SE
LECT CASE WHEN MAX(VID) IS NULL THEN 000001 ELSE (MAX(VID)+1) END AS VID FROM tm
_matrix));

ERROR 1093 (HY000): 您不能在 FROM 子句中指定目标表 'tm_matrix' 进行更新

如果我在查询下触发然后给我以下错误

mysql> INSERT INTO tm_visitor (VDT,VID)VALUES(replace(left(now(),10),'-',''),SEL
ECT CASE WHEN MAX(VID) IS NULL THEN 000001 ELSE (MAX(VID)+1) END AS VID FROM tm_
visitor);

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“SELEC T CASE WHEN MAX(VID) IS NULL THEN 000001 ELSE (MAX(VID)+1) END AS VID FROM”附近使用正确的语法

如果我使用以下查询,那么它会给我以下错误

mysql> INSERT INTO tm_visitor (VDT,VID)VALUES(replace(left(now(),10),'-',''),(SE
LECT CASE WHEN MAX(VID) IS NULL THEN 000001 ELSE (MAX(VID)+1) END AS VID));

错误 1054 (42S22):“字段列表”中的未知列“VID”

更新

我试过以下

INSERT INTO tm_visitor (VDT,VID,NAME,CONTACT) SELECT REPLACE(LEFT(NOW(), 10), '-', ''), LPAD(COALESCE(MAX(VID) + 1, 000001),6,'0') FROM tm_visitor 

那么在这里我如何传递 NAME,CONTACT 的值,因为这里我们没有使用 values() 来插入

4

2 回答 2

0
INSERT INTO tm_matrix (VDT,VID)
SELECT replace(left(now(),10),'-',''), IFNULL(MAX(VID),0)+1 FROM tm_visitor
于 2012-07-31T07:10:41.240 回答
0

试试这个——

INSERT INTO tm_visitor (VDT,VID)
 SELECT REPLACE(LEFT(NOW(), 10), '-', ''), COALESCE(MAX(VID) + 1, 000001) FROM tm_visitor;
于 2012-07-31T07:20:57.880 回答