【问题标题】:Select last inserted records and grouping mysql选择最后插入的记录并分组mysql
【发布时间】:2012-07-24 10:00:45
【问题描述】:

我有一张带笔记的桌子。下面是我的数据库的一小部分数据。

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 的最后一个条目

希望这次有意义

【问题讨论】:

  • 那 90% 呢?我不明白那部分。
  • 您是否只想获取每个寄存器 id 的最大记录?例如ids 6 & 8 被选中。

标签: php mysql sql


【解决方案1】:

您应该尝试此查询以获取具有最大 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;

来源:Retrieving the last record in each group

【讨论】:

  • 有大约 200 个寄存器号和各种记录数。我无法使用限制。
  • 好的,那么您可以删除 LIMIT 子句。你能详细说明你的具体要求吗?
  • 对不起,我把问题放错了。我已经解释过了,希望现在有意义..
【解决方案2】:

试试

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

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

【讨论】:

  • 为什么是WHERE 1?这是一个重言式。
  • @mschr 问题中有问题...我已更正。如果您可以再次检查并提供解决方案,那就太好了。
【解决方案3】:

使用

SELECT * FROM sales_log WHERE `classification` =  'red' ORDER BY `Id` DESC LIMIT 2;

【讨论】:

    【解决方案4】:

    这应该可行:

    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 的链接,显然他发布的解决方案要快得多。它产生与我的查询完全相同的输出。

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 2012-05-07
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多