- - PR -
SQLの使い方について。
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-24 09:42
mysqlを使用しています。
select max(ID)+1の使い方なのですが、 1から登録したいのですが、0からしか登録できません。 0を登録した場合次の登録のときは Duplicate entry '1-0' for key 1 というエラーが出ます。 この場合演算子などは使えないのですか? select max(MEMBER_ID>=1 )+1でも結果は変わりませんでした。 単独で使う場合はMAXの値は正確に出ます。 よろしくお願いします。 | ||||||||
|
投稿日時: 2006-11-24 09:51
なんでSELECT文なのに登録とか関係あるわけ? イミフメイ。となりの人に聞くなりしてもうちょっとまとめてから質問しなよ。 | ||||||||
|
投稿日時: 2006-11-24 09:57
ぶさいくろうさん返信ありがとうございます。
すみません。質問に抜けている箇所がありました。 インサート文の中にIDの数字を入れなくても、最大値に+1を足していくようにしたいのですが、 insert into t_member(TEAM_ID,ID)values(1,'select max(ID>=1 )+1') nullの場合、0から登録されてしまい、2度目からはエラーが出てしまいます。 | ||||||||
|
投稿日時: 2006-11-24 10:08
TERM_IDはつねに1だし、IDは文字列('select max(ID>=1 )+1')を落とすんですね? #というか「AUTO_INCREMENT」じゃダメなのか? | ||||||||
|
投稿日時: 2006-11-24 10:30
shimixさん返信ありがとうございます。
早速やってみたのですが、AUTO_INCREMENTも同じ結果で返ってきます。 TEAM_ID,IDは両方ともプライマリキーです。 | ||||||||
|
投稿日時: 2006-11-24 10:51
MySQLの正確な文法を知らないので、外しているかもしれませんが、
max(ID>=1 )+1 の代わりに、 COALESCE(max(ID),0)+1 では、いかがですか? | ||||||||
|
投稿日時: 2006-11-24 11:14
当たり前でしょ。 2度目からはinsertじゃなくてupdateでしょうが。
ユニークと混同してるんじゃないの? それともMySQLは、単一テーブルの複数の列にプライマリを設定できるのか、 あるいは、プライマリとユニークは区別されていないのか。 オートナンバーを指定した場合は、指定した列には代入は指定しない。 だって、オートナンバーなんだし。 insert into t_member (TEAM_ID) values ( 1 ) | ||||||||
|
投稿日時: 2006-11-24 13:10
プライマリキーを複数・・というのはやったことがないですね。出来ないとは思いますが未検証です。当然プライマリとユニークは区別されてます。
今時点のSQLを再掲してもらった方がいいでしょう>くりさん。どちらの列をオートナンバー(AUTO_INCREMANET)にしたのかも教えてください。 [ メッセージ編集済み 編集者: shimix 編集日時 2006-11-24 13:12 ] | ||||||||
