簡體   English   中英

選擇最后插入的記錄並對mysql進行分組

[英]Select last inserted records and grouping mysql

我有一張帶筆記的桌子。 下面是我的數據庫的一小部分數據樣本。

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%

對不起,我以錯誤的方式解釋了這個問題。

實際上我想要的是檢索每個register_no的最后一個插入記錄,因為sales_log表包含列表進度...

例如,Register_no 112在數據庫中有12條記錄,最后一條記錄是90%(它從10,40,60%進展,因此所有這些記錄都在數據庫中)

我想要的是得到90%的register_no 112等等......它不僅僅是一條記錄......大約有500個register_no,我想得到每個register_no的最后一個條目

希望這次有意義

您應該嘗試此查詢以獲取具有最大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;

來源: 檢索每組中的最后一條記錄

嘗試

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

告訴msyql匹配'name = ben'永遠不會找到mandy的id 7

采用

SELECT * FROM sales_log WHERE `classification` =  'red' ORDER BY `Id` DESC LIMIT 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的鏈接,顯然他發布的解決方案要快得多。 它產生與我的查詢完全相同的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM