繁体   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