MYSQL:从多个记录中查找最后一条记录,每条记录对特定列具有相同的值

时间:2013-07-29 03:39:53

标签: mysql

任何人都可以帮我解决MySql数据库查询问题:

我有一张包含以下数据的表:

work_date   ticket no   category
------------------------------------
7/15/2013   111           a
7/15/2013   222           b
7/15/2013   333           c
7/16/2013   111           a
7/16/2013   555           e
7/16/2013   333           f
7/17/2013   111           H

我需要帮助编写一个查询,该查询将读取所有表数据,然后创建2列一个票据号,第二个作为类别。在故障单列下,它将显示所有不同故障单编号的计数,类别下的值应该是分配给该故障单的最后一个类别。

我正在使用以下查询

SELECT category, count(distinct(ticket_no)) 
FROM master 
group by category 
order by 2 DESC`

出现在2个或更多类别中的票据被多次计算,我希望它只计算一次,而且也是最新的一次

预期结果:

Ticket No   Category
--------------------
111           H 
222           b 
333           f
555           e

4 个答案:

答案 0 :(得分:0)

我没有收到您的示例查询。它按category分组,而不是ticket,但样本数据是ticket

无论如何,我认为这可以做你想要的:

select ticket,
       substring_index(group_concat(category order by work_date desc), ',', 1)
from master m
group by ticket;

答案 1 :(得分:0)

您可以使用以下SQL查询:

SELECT DISTINCT(ticket_no), category FROM table_name SORT BY DESC;

答案 2 :(得分:0)

select * from
(select ticket_no,category from master order by work_date desc) abc
group by ticket_no;

<强> fiddle

答案 3 :(得分:-1)

SELECT *
 FROM distinct t1
 WHERE NOT EXISTS (
   SELECT *
   FROM distinct t2
   WHERE t2.ticket_no= t1.ticket_no
     AND t2.work_date   > t1.work_date   
   ); 

这里work_date应该是格式化的时间戳