2017-12-20 13 views
-3

SQLテーブルにはTYPE |のような3つのカラムがあります。登録NR。 | 「車」という表のID。 TYPE列には、登録NRの車両モデルBMW、MERCEDESなどがあります。登録番号AB77TRR、UTYIE77などであり、IDには、名前が示すように、ID12,13,14などがあります。 問題は、ID列に同じモデルと登録のIDが複数ある可能性があることです以下のような:SQLのテーブルから最後のレコードを選択する

BMW AB77TRR 12 
BMW AB77TRR 13 
BMW AB77TRR 14 

列のほとんどは、唯一の1つのIDを持っていますが、より多くのIDを持っているいくつかありますし、私は最後のものだけが登録を選択したいと私は場合はLIMIT 1またはTOP 1.

を使用することはできません私はこのタイプの "select type、registration nr。、id from cars(bmw、mercedes、audi、porsche)"を実行すると、テーブルIDのすべてのレコードが表示され、最後のIDのみを表示します。例えば 私はこれが選択実行する場合それは私が表示されます「タイプ、登録NRを選択し、(BMW、メルセデス)でタイプが車からID。」:

BMW  AB77TRR 12 
BMW  AB77TRR 13 
BMW  AB77TRR 14 
MERCEDES UTYIE77 11 

を私は次のようになりたい:

BMW  AB77TRR 14 
MERCEDES UTYIE77 11 

ありがとうございます。

+0

良いです。 –

+0

異なるREGISTRATION NRを使用して、サンプルデータに別のMERCEDESを追加し、それに従って適切な結果を調整します。 – jarlh

答えて

3

あなたは一例でW3schoolsからSQL基礎を学ぶ必要があり、とにかくこれは集約関数MAXの古典的なケースである:タイプ、登録なしで一意のインデックスを追加する

SELECT type, registration, MAX(id) FROM cars GROUP BY type, registration 
+0

これは、サンプルデータからすべてのレコードを返します。 –

+0

はい、彼が望む出力を確認してください; –

+0

サンプルデータが不良です。 – jarlh

1

各タイプの最大IDを返すサブクエリがあります。その結果を登録しよう:

select c1.* 
from carstable c1 
join (select TYPE, max(id) as maxid 
     from carstable 
     group by type) as c2 
    on c1.TYPE = c2.TYPE and c1.id = c2.maxid 
+0

なぜあなたはそれを複雑にしていますか? –

+0

@ダニエルE。質問はあまり明確ではありません。これは、私が質問を読む方法に対する素晴らしい答えです。 – jarlh

+0

私はもっと同意できませんでした! –

関連する問題