2011-02-02 16 views
3

select文を使用してあるテーブルから別のテーブルにレコードを挿入しています。に挿入されているテーブルには、更新ごとに1ずつインクリメントする必要のある新しいフィールドがありますが、更新ごとにレコードのグループごとに番号を再入力する必要があるため、自動インクリメントフィールドであってはなりません。使用されているSELECTステートメントが42のレコードを選択する場合、新しいテーブルは1から始まる各レコードに対して1ずつインクリメントされるフィールドを持ちます。次のグループは、このフィールドを1にしてから、選択したレコードごとに増分する必要があります。これは可能ですか?ほとんどの検索で自動インクリメントキーの検索結果が見つかるたびに、使用する構文を見つけるのが難しいです。mysqlのselectに基づいて挿入中に非自動インクリメントフィールドをインクリメントする

INSERT into images (filename, imgpath, imagenumber) 
SELECT filename, imgpath, 1+ 
FROM old_images 
WHERE event_id = 20 

これは、テーブルの簡単な例ですが、MySQLに直接画像テーブルにimagenumberフィールドに置かれているものをインクリメントする方法がある場合、私は思ったんだけど。

答えて

4

は、これは私が必要とする正確に何になりそうだが、私は、MySQLからの例だけでなく、あなたの例を使用しようとすると

SET @t1=0; 
INSERT into images (filename, imgpath, imagenumber) 
SELECT filename, 
     imgpath, 
     @t1 := @t1+1 
FROM old_images 
WHERE event_id = 20 
+0

の線に沿ってUser-Defined Variables

何かを使用してを見てください常に変数のnull値を返します。 クエリブラウザで次の操作を行うと、列名に式が含まれていますが、値はnullです。私は明白な何かを欠いていますか – jsieber

+0

私の問題は、mysqlクエリーエディタでこれを実行しようとしたためです。私はcoldfusionのページから同じSQLを試して、それは正常に働いた。私は、クエリーブラウザが挿入された各行に対して新しい接続を作成し、毎回その変数を削除するとの説明を見つけました。 – jsieber

関連する問題