- PR -

MAX値のインサート

投稿者投稿内容
くり
常連さん
会議室デビュー日: 2006/10/30
投稿数: 28
お住まい・勤務地: tokyo
投稿日時: 2006-11-15 15:47
テーブルのMAX値を登録したい場合はどのようにINSERT文を作ればよろしいでしょうか?
-------------------------------------------------------------------
t_team //テーブル名
TEAM_ID //MAX値の登録がしたい

INSERT INTO t_team(TEAM_ID, TEAM_NM)
values (select(max(TEAM_ID)+1,"TEAM_NM");

-----------------------------------------------------------------
max値を求めて+1をするとこまでは、わかったのですが、
インサートのときにどのようにして使ったらいいのかわかりません。
わかっているところまで書きます。
間違っているところのご指摘をお願いします。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-11-15 16:01
括弧の数も合ってないし・・・。

まずは、select文で、必要なデータを取得できるようになりましょう。
これができれば、どこが間違っているのかも、わかるようになります。
くり
常連さん
会議室デビュー日: 2006/10/30
投稿数: 28
お住まい・勤務地: tokyo
投稿日時: 2006-11-15 16:11
Edossonさん返信ありがとうございます。

select (max(TEAM_ID)+1) from t_team;
で、最大値を求めることができました。

では、
INSERT INTO t_team(TEAM_ID, TEAM_NM)
values (select(max(TEAM_ID)+1),"TEAM_NM" from t_team);

これで少しはちかくなりましたでしょうか?
これでは、登録はできませんでした。

[ メッセージ編集済み 編集者: くり 編集日時 2006-11-15 16:11 ]
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-11-15 16:20
じゃ、次はサブクエリについて勉強しましょう。

selectは、どこからデータをもってくるつもりです?
引用:

INSERT INTO t_team(TEAM_ID, TEAM_NM)
values (select(max(TEAM_ID)+1),"TEAM_NM" from t_team);


エラーメッセージには、なんてでてるんですか?
メッセージの内容なんて読んでないと断言されても、文句は言えないかと。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-11-15 16:49
投稿の後、気がついたので。
引用:

INSERT INTO t_team(TEAM_ID, TEAM_NM)
values (select(max(TEAM_ID)+1),"TEAM_NM" from t_team);


select文が、ちゃんとselect文の形をしていれば、通ると思いますよ。
うにくま
ベテラン
会議室デビュー日: 2005/11/05
投稿数: 82
投稿日時: 2006-11-15 17:15
引用:

INSERT INTO t_team(TEAM_ID, TEAM_NM)
values (select(max(TEAM_ID)+1),"TEAM_NM" from t_team);


この記述では、TEAM_ID列にmax(TEAM_ID)+1"TEAM_NM"の2列を登録する
と言う意味になってしまうので正しくありません。

正しくは、
コード:
INSERT INTO t_team(TEAM_ID, TEAM_NM)
values ((select max(TEAM_ID)+1 from t_team),
        "TEAM_NM"); 


若しくは、
コード:
INSERT INTO t_team(TEAM_ID, TEAM_NM)
select max(TEAM_ID)+1, "TEAM_NM" from t_team;


になります。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2006-11-15 17:18
無理して一つにまとめるより 二つに分けた方が
わかり易いし あとあと流用が効くような気もするのだが!

Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-11-15 17:36
うにくまさんのサンプルの場合、t_teamに複数のレコードがあった場合、
それぞれのレコードについて、データを追加してしまうけど、いいのかな?
いや、最大値のIDを持つレコードを挿入する、というロジックなので、気になって。

いや、それがだめだとかいうことでなく、
私のと、うにくまさんのと、何がどう違うのか、
その結果が要件を満たすのか、ちゃんと理解して選択できていればいいのですが。
引用:

七味唐辛子さんの書き込み (2006-11-15 17:18) より:
無理して一つにまとめるより 二つに分けた方が
わかり易いし あとあと流用が効くような気もするのだが!


まあ、ごく簡単なサブクエリですし。
それよりも、ちゃんとエラーメッセージを読めと(ry

スキルアップ/キャリアアップ(JOB@IT)