2012-05-08 19 views
9

私は基本的に "目標"バーを作ろうとしています。目標はMySQLテーブルで最後に行ったエントリを取得することによって決定されます。私は最後のエントリーのIDを取得したいと思います。MySQLテーブルの最後のエントリを取得

テーブルの最後のエントリを取得し、その最後のエントリからIDを取得するにはどうすればよいですか? (PHPを使用して)

+0

'id'のような自動増分フィールドを持っていますか? –

+0

最新のエントリを取得していることを確認するには、タイムスタンプを記録する必要があります。 –

+0

@MichaelMior、絶対にそうではありません!タイムスタンプは、これを保証するための解決策の近くにはありません。 – Brad

答えて

25

を使用することができます。

:行を取得するために、次に

SELECT MAX(id) FROM mytable 

SELECT * FROM mytable WHERE id = ??? 

または、すべて1つのクエリで実行できます。

この例で使用されるように、このSQLクエリであなたが望む結果を得るために、このクエリを使用することができます
SELECT * FROM mytable ORDER BY id DESC LIMIT 1 
+0

ありがとう!私は他の人たちがそれをもっと複雑にしていたと思う。私の質問はもっと良いと思うかもしれない。私は単に最大のIDが必要でした。ありがとう! – ComputerLocus

2

フィールドが自動インクリメントであるならば、あなたは最大のIDを取得するにはLAST_INSERT_ID

+0

これは、行を挿入した直後のことを前提としています。 –

6

$sql = "SELECT user_id FROM my_users_table ORDER BY user_id DESC LIMIT 0,1"; 
+0

ありがとう、しかし、これはおそらく動作するだろうが、私はエリックを使用します! – ComputerLocus

+0

それは問題ありません。私はこの糸があなたの問題を適切に解決してくれることを願っています) – dotTutorials

2

は確実にこれを行うには、あなたはあなたができるテーブル内のいくつかのフィールドを持っている必要がありますどれが最後であるかを調べる。これは、レコードを追加したときのタイムスタンプ、継続的に増加するシーケンス番号(特に自動インクリメントシーケンス番号)などです。

次に、「rec_seq」というシーケンス番号を考えてみましょう。

select * from my_table 
where rec_seq=(select max(rec_seq) from my_table) 
+0

Ericの答えのように見えますが、私はEricの答えを取らなければなりません! – ComputerLocus

+0

問題はありませんが、彼は少しシンプルですが、簡単な解決策です。 – Jay

7

LAST_INSERT_ID()機能を使用できます。例:

$sql = "SELECT * FROM mytable WHERE id = LAST_INSERT_ID()"; 
+0

エリックが答えたものを使用しますが、これはうまくいくように見えます! – ComputerLocus

+3

note LAST_INSERT_IDについて:LAST_INSERT_IDは、現在の接続によって挿入された最後の行のIDを返します。他のIDは返しません。 – laltin

2

これはあなたの

2

をテーブルのフィールドデータの最後の結果が得られます0,1 逆の順番と設定された制限内のテーブルからすべてのフィールドを選択し、ユーザー

'SELECT user_id FROM table_name WHERE user_id = '.$userid.' ORDER BY user_id DESC LIMIT 1'; 
の最新のエントリを取得します。
関連する問題