2013-07-29 59 views
0

可以在任何一個請幫助我與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 

回答

0

我沒有得到你的樣品查詢。它是由category而不是ticket組成,但示例數據是由ticket

在任何情況下,我覺得這你想要做什麼:

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

您可以使用下面的SQL查詢:

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

上面的查詢會拋出語法錯誤,至少在MySQL –

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

fiddle

-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應該是一個格式化的時間戳

+0

雖然代碼只回答往往是OK,這是更好地解釋一下你的代碼實際上呢,例如「WHERE NOT EXISTS」如何工作。 – Zeta

+0

在檢查t2.work_date> t1.work_date我們會得到大於t2的日期 不存在的地方几乎可以像左外連接一樣工作,因此它將返回t2中不存在的行 –

+0

您應該[編輯]( http://stackoverflow.com/posts/31136876/edit)附加信息到你的答案。評論很容易被忽視。 – Zeta

相關問題