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));

エラー 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);

エラー 1064 (42000): SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを参照してください

以下のクエリを使用すると、以下のエラーが表示されます

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 

ここでは挿入にvalues()を使用していないため、NAME、CONTACTに値を渡すにはどうすればよいですか

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 に答える