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%

对不起,我以错误的方式解释了这个问题。

实际上我想要的是为每个 register_no 检索最后插入的记录,因为 sales_log 表包含一个列表进度......

例如,Register_no 112 在数据库中有 12 条记录,最后一条记录是 90%(它从 10、40、60% 发展,所以所有这些记录都在数据库中)

我想要的是获得 90% 的 register_no 112 等等......它不仅仅是一个记录......大约有 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 1 ORDER BY `id` DESC LIMIT 2

告诉 msyql 匹配 'name = ben' 将永远找不到 mandy 的 id 7

于 2012-07-24T10:05:56.760 回答
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 回答