2011-03-28 49 views
3

我正在嘗試執行類似'select groupwise maximum'的操作,但我正在尋找groupwise訂單號。mysql按組選擇訂單號

所以像這樣

briefs 
---------- 
id_brief | id_case | date 
1  | 1  | 06/07/2010 
2  | 1  | 04/07/2010 
3  | 1  | 03/07/2010 
4  | 2  | 18/05/2010 
5  | 2  | 17/05/2010 
6  | 2  | 19/05/2010 

表我想這樣

breifs result 
---------- 
id_brief | id_case | dateOrder 
1  | 1  | 3 
2  | 1  | 2 
3  | 1  | 1 
4  | 2  | 2 
5  | 2  | 1 
6  | 2  | 3 

我覺得我想要做像這裏所描述MySQL - Get row number on select什麼結果,但我不知道我是怎麼會重置每個id_case的變量。

+0

結果中的最後一行應該是'6 | 3 | 1',對嗎? – 2011-03-28 09:31:48

+0

errk,錯字,固定。 – Matt 2011-03-28 09:35:05

+0

請澄清一下你的問題,這個例子很模糊。 – vbence 2011-03-28 09:37:11

回答

2

這會給你有多少記錄與此id_case值和一個日期小於或等於此date值。

SELECT t1.id_brief, 
    t1.id_case, 
    COUNT(t2.*) AS dateOrder 
FROM yourtable AS t1 
    LEFT JOIN yourtable AS t2 ON t2.id_case = t1.id_case AND t2.date <= t1.date 
GROUP BY t1.id_brief 

Mysql對於可以使用GROUP BY進行查詢的列是寬容的。有了更嚴格的DBMS,您可能需要GROUP BY t1.id_brief, t1.id_case

強烈建議你們正確的索引上表

CREATE INDEX filter1 ON yourtabl (id_case, date) 
+0

如果我改變<= to > =它會給我我想要的訂單。幹得好,給一個含糊不清的問題正確的答案;) – Matt 2011-03-28 09:49:19