2

私はメモ付きのテーブルを持っています。以下は私のデータベースのデータの小さなサンプルです。

Id  register_no     name        classification      possibility
1   112             Ben         Red                 10%
2   112             Ben         Red                 10%
3   113             Ben         Red                 20%
4   112             Ben         Amber               30%
5   112             Ben         Amber               10%
6   113             Ben         Amber               30%
7   113             Ben         Red                 10%
8   112             Ben         Red                 50%

質問を間違った方法で解釈してすみません。

実際に私が欲しかったのは、sales_logテーブルがリストの進行状況を保持しているため、register_noごとに最後に挿入されたレコードを取得することです...

たとえば、Register_no 112にはデータベースに12個のレコードがあり、最後のレコードは90%です(10、40、60%から進行したため、これらのレコードはすべてデータベースにあります)

私が欲しいのは、register_no 112などの90%を取得することです...それは1つのレコードだけではありません...約500のregister_noがあり、各register_noの最後のエントリを取得したいです

今回はそれが理にかなっていることを願っています

4

4 に答える 4

3

最大id値を持つレジスタ番号のメモを取得するには、次のクエリを試す必要があります。

SELECT n1.*
FROM   notes n1
       LEFT JOIN notes n2
           ON (n1.register_no = n2.register_no AND n1.id < n2.id)
WHERE  n2.id IS NULL;

ソース:各グループの最後のレコードを取得する

于 2012-07-24T10:03:26.490 に答える
2

使用する

SELECT * FROM sales_log WHERE `classification` =  'red' ORDER BY `Id` DESC LIMIT 2;
于 2012-07-24T10:12:27.040 に答える
2

これは機能するはずです:

SELECT data.* 
FROM sales_log AS data
JOIN 
    (
        SELECT MAX(Id) as Id 
        FROM sales_log 
        GROUP BY register_no
    ) AS newest
    ON data.Id = newest.Id

結果:

'8', '112', 'Ben', 'Red', '50'
'7', '113', 'Ben', 'Red', '10'

編集:@Omeshのリンクを見たところ、彼が投稿した解決策の方がはるかに速いようです。クエリとまったく同じ出力が生成されます。

于 2012-07-24T11:17:32.647 に答える
2

試す

SELECT * FROM (`sales_log`) WHERE 1 ORDER BY `id` DESC LIMIT 2

'name = ben' に一致するように msyql に指示すると、mandy の ID 7 が見つかりません

于 2012-07-24T10:05:56.760 に答える