ここから本文です

簡単な質問(のハズ)

rik********さん

2007/7/313:50:46

簡単な質問(のハズ)

あるテーブルのプライマイリキー名をIDとし、NOT NULL AUTO_INCREMENしています。
最後にINSERTされたレコードのIDを取得するには、どのようなSQLになるのでしょうか?
わかる方がいましたら御教授下さい。よろしくお願いいたします。

補足大事な質問を書き忘れてしまったため補足させていただきます。
最後に追加されたレコードの指定したカラム(HOURやMINUTE)を得たい場合は
どうすればよいのでしょうか?

閲覧数:
1,017
回答数:
3
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

TOSHIさん

編集あり2007/7/314:50:47

↓の感じじゃダメでしょうか?

select HOUR, MINUTE
from TableA
order by ID desc
fetch first 1 rows only

やってることは

「テーブルのIDを降順(大きい数の順)にして、
その最初の1レコード目からカラムを取得する」

Max関数など使用するとパフォーマンスが悪くなった覚えがあります。

Max関数を使う場合↓
select HOUR, MINUTE
from TableA
where ID =
(
select max(ID) from TableA
)

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

chu********さん

2007/7/315:25:57

「fetch first 1 rows only」は、DB2の独自構文であり、他のRDBMSでは使えません。

MySQLの質問をする場合は、バージョンを明記してください。

>最後にINSERTされたレコード

これは、自分が追加した行のことですか?
それとも、他人が追加したものも含めてですか?

>Max関数など使用するとパフォーマンスが悪くなった覚えがあります

インデクスを付けていましたか?

自分が追加した最後の行なら、

select `HOUR`,`MINUTE`
from TableA
where ID=last_insert_id()

で検索できると思います。

※MySQLの独自機能で、1回のinsertで複数行を格納する指定
「insert into t1 values(x,xx,xx),(y,yy,yy),(z,zz,zz)」
の場合は、最初のinsert時に生成された値が返るので注意


他人が追加したものを含めてなら、

select `HOUR`,`MINUTE`
from TableA
where ID=(select max(ID) from TableA)



select `HOUR`,`MINUTE`
from TableA
order by ID desc limit 1


マニュアル等で、簡単に調べられる内容なので、自分で調べる癖もつけましょう。

kur********さん

2007/7/313:53:07

select max(ID) from ・・・・・

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる