2011-11-14 7 views
0

他の誰かがこのテーブルを設計しています。SQLを使用して複数の行を挿入する - 数字を手動で増やす問題

あるテーブルから別のテーブルに複数の行を挿入しようとしています。行を挿入するテーブルにはIDがありますが、自動インクリメントはしません。私は行を挿入すると手動でIDをインクリメントする方法を理解できません。現在のコードはエラーをスローします:

Error running query. Page15.CaseSerial is invalid in the select list becauseit is not contained in either an aggregate function or the GROUP BY clause.

私はGROUP BY句を追加してみましたが、成功しませんでした。ここで

はコードです:

insert into page4 (serial, caseserial, linkserial, type, add1, add2, city, state, orgname, prefername, email, firstname, lastname, salutation, contactstatus, workphone, notes, cellphone, nametype, homephone, fax, zip, payments) 
    select id = max(serial), caseserial, linkserial, type, add1, add2, city, state, 
      orgname, prefername, email, firstname, lastname, salutation, contactstatus, 
      workphone, notes, cellphone, nametype, homephone, fax, zip, payments 
    from page16 

私はpage4から最高のIDを取得するために何かを書くと次の最高を挿入することができれば、それはいいだろう。

ありがとうございます!

+2

SQLの味は?あなたが使用しているRDBMによって解決方法は異なります – Andrew

+0

これはMSFTデータベースの場合、これに対するマイクロソフトのアプローチに関する記事です。 http://support.microsoft.com/kb/273586 – xQbert

+0

データベースにはどのようなサーバーまたは環境が使用されていますか?たとえば、MS AccessはSQLクエリでDMin()やDMax()ルックアップ関数をサポートしているので、私は尋ねています。ご使用のサーバーがユーザー定義のスカラー関数をサポートしている場合は、それらの関数を便宜的に実装してSQL照会で使用することができます。 –

答えて

0
declare @maxId int 

select @maxId = max(yourIdColumn) 
from YourTable 

set @maxId = @maxId + 1 

insert into YourTable (yourIdColumn, ....) 
values (@maxId, ....) 

免責事項:これはRDBMSのの他にオーバー移調だろうかわからないが、これは心の中のSQL Serverを使用することです。また、これは1つの値だけを挿入して処理します。値のセットを挿入する必要がある場合は、私に知らせてください。

+0

"あるテーブルから別のテーブルに複数の行を挿入しようとしています。"彼は私たちに知らせる:D – xQbert

+0

@xQbertそれは本当です!指摘してくれてありがとう(明らかです)。 ;)私はすぐに私の答えを更新します。 –

+0

あなたはそれが意味された精神でそれを取ってうれしいです。卑劣ではなく、粗悪で無礼です。私は自分でこれをやる方法を探していて、あなたのアプローチは合理的に思えました。 (私はカーソルを避けることを望んでいたが、私はカーソルなしでそれを理解することができなかった。)したがって私はこれがあなたの応答であると考えていたと思う。それにもっと時間を費やさなかった。 +彼らが使っていたRDBMSを知りたい。 – xQbert

関連する問題