2012-03-08 18 views
0

タイムスタンプを使用しないでテーブル内の重複レコードから最新のIDを取得しようとしています。MySQL:テーブル内の重複レコードから最新IDを取得

SELECT * 
FROM `table` 
WHERE `title` = "bananas" 

-

table 
id title 
-- ----- 
1 bananas 
2 apples 
3 bananas 

は理想的には、私はID 3

+1

「最新のID」はどのように定義しますか?ちょうど最大のもの? 「重複レコード」とはどういう意味ですか? –

+0

主キーから作成された最新のものと同じ最大のIDです。重複したレコードによって、私はこのケースでは重複するタイトルを意味する "バナナ" – Aaron

答えて

4

私は少しあなたの例ではSELECTで混乱してるをつかむしたいのですが、うまくいけば、あなたはこれをつなぎすることができます私の例から。あなたは、最新の行を返すようにしたい場合は、私は間違いなく、その行「最新」を作るかを判断しようとしているお勧めしますが

は、あなたは単にMAX()機能

SELECT MAX(id) FROM TABLE 

を使用することができます。最も高い列[id]を持っているという理由だけで、何が起こっているのかを検討したいことがあります。同じデータを使用する2つのデータベースを結合する場合はどうなりますか? [id]列を外すことは最良の決定ではないかもしれません。可能であれば、[LastUpdated]または[Added]日付スタンプの列をデザインに追加することをお勧めします。 idを想定し

+0

まさに私が探していたもの。ありがとう。 – Aaron

+0

これは、質問の「重複」部分に対処していないようです。 – tribal

+0

バナナは重複した行です。テーブルが自動的に行をインクリメントすると仮定したので、最も高い値を持つidは最後に入力されたエントリでなければなりません。 – cgatian

0

イムは、あなたが、あなたが持っているどのように多くの行変数にして、あなたが持っているどのように多くの行格納する変数をチェックするためにWHERE =句を設定した店舗を数えることができる

、オートインクリメントされます。

しかし、これはハックの解決策です。なぜなら、行を削除してIDが減少しないと、IDをスキップすることになるからです。

+0

行の数と最大のIDは、行が削除されると、相互に関係しない可能性があります。 –

0
select max(a.id) from mydb.myTable a join mydb.myTable b on a.id <> b.id and a.title=b.title; 
関連する問題