条件で指定された最後に入力された行を選択するだけです、例えば:
SELECT ID from bugs WHERE user=Me
ユーザー「Me」が入力した最後のIDのみを返す必要があります。これを行う簡単な方法はありますか?ありがとうございました。
デフォルトでCURRENT_TIMESTAMP
に設定されるTIMESTAMP
列を持つことが最善です。ここで見つけることができる唯一の真の予測動作です。
2番目にできることはORDER BY ID DESC LIMIT 1
で、最新のIDが最大値であることを望みます。
ORDER BY ID DESC
を使用できますが、そのようにすればずっと速くなります:
SELECT * FROM bugs WHERE ID = (SELECT MAX(ID) FROM bugs WHERE user = 'me')
巨大なテーブルがある場合は、大きな違いが生じる可能性があります。
[〜#〜] edit [〜#〜]
複数回必要な場合(または読みやすいと思う場合)に変数を設定することもできます。
SELECT @bug_id := MAX(ID) FROM bugs WHERE user = 'me';
SELECT * FROM bugs WHERE ID = @bug_id;
SELECT MAX(ID) from bugs WHERE user=Me
これを達成する1つの方法は、記録を注文して1に制限することです。たとえば、次の表(「データ」)がある場合です。
id | user | price
-------------------
1 | me | 40.23
2 | me | 10.23
次のSQLクエリを試してください
select * from data where user='me' order by id desc limit 1
並行性では、最新のレコードが入力したばかりのレコードではない場合があります。主キーを使用して最新のレコードを取得することをお勧めします。
自動インクリメントフィールドの場合、SELECT LAST_INSERT_ID();
を使用して、作成したばかりのIDを取得します。
SELECT * FROM `table_name`
ORDER BY `table_name`.`column_name` DESC
LIMIT 1
PHPからmysqlクエリを実行した直後
でそれを得る
$lastid=mysql_insert_id();
これにより、自動インクリメントID値が最も高くなります