2017-05-17 28 views
0

我有這樣的一個表:如何從表中獲取多個MAX值

id, customer_id, item_id, field, value 

下面是一些示例數據:

id, cid, iid, field, value 
1, 100, 1000, 'rating', 10 
2, 100, 1000, 'rating', 15 
3, 100, 1000, 'worth', 20 
4, 100, 1000, 'worth', 25 

5, 100, 1100, 'rating', 35 
6, 100, 1100, 'rating', 30 
7, 100, 1100, 'worth', 35 
8, 100, 1100, 'worth', 30 

9, 200, 2000, 'rating', 20 
10, 200, 2000, 'rating', 25 
11, 200, 2000, 'worth', 40 
12, 200, 2000, 'worth', 45 

13, 200, 2100, 'rating', 30 
14, 200, 2100, 'rating', 35 
15, 200, 2100, 'worth', 50 
16, 200, 2100, 'worth', 55 

我一直想寫返回查詢僅適用於特定客戶的所有項目的所有字段的最新值。

對於客戶100將返回:

id, cid, iid, field, value 
2, 100, 1000, 'rating', 15 
4, 100, 1000, 'worth', 25 
6, 100, 1100, 'rating', 30 
8, 100, 1100, 'worth', 30 

而對於客戶200將返回:

id, cid, iid, field, value 
10, 200, 2000, 'rating', 25 
12, 200, 2000, 'worth', 45 
14, 200, 2100, 'rating', 35 
16, 200, 2100, 'worth', 55 

可以有不同領域的無限量,有可能是價值無限量爲每一個客戶的每一個項目的每一個領域。

該值每小時不斷變化,我希望查詢只返回某個客戶所有項目的所有字段的最新值。

cid可以用基本的WHERE cid ='1'來限制,但我不知道如何將查詢分組以獲得每個字段和每個項目的一個值。我知道我可以通過對每個領域找到MAX(ID)獲得最新的,但我不知道如何與一個查詢做到這一點。

我能做到這一點與多個查詢和一些PHP但有可能使用單個查詢做到這一點?

回答

0

使用子查詢從表中獲取「每個X的最大值|最小值|」,將該子查詢返回到X = X和max | min =值上的表,以獲取滿足max |分鐘開始發生的。