2016-03-02 29 views
0

我試圖運行一個查詢,我想要的行數只有在In Stock的ID最高時才爲In Stock。 (由於同一組MAC的下位ID的例如地址,是歷史記錄)只有當它是最新的ID也匹配一個字符串時才抓取行(location_is)

的MySQL版本,我使用的是4.0.24

+----------------+-------------+-----+ 
| mac_address_is | location_is | id | 
+----------------+-------------+-----+ 
| 00xxF7   | In Stock | 185 | 
| 00xxF7   | Out   | 186 | 
| 00xx6A   | In Stock | 200 | 
| 00xx6A   | In Stock | 201 | 

我想這些結果:00xx6A,因爲它是唯一一個In Stock作爲最大ID。

In Stock對於00xxF7應該忽略,因爲它不是位於In Stock位置的最新(該mac的最高ID)。

編輯: 由於軟件的版本,我無法使用子查詢。 4.0.24

此外,我不認爲我可以使用limit作爲我的查詢將不得不返回約1000條目。它的最新mac_address_is一千條目`=「庫存」

回答

1

排序編號的表格遞減,過濾器在股票和限制記錄到1輸出。

select * from yourtable 
where location_is='In Stock' 
order by id desc limit 1 
0

簡單的解決方案:

SELECT mac_address_is FROM yourtable 
WHERE location_is="In Stock" 
ORDER BY id DESC LIMIT 0,1 
0
SELECT t.mac_address_is, MAX(t.id) as id 
    FROM mytable t 
WHERE t.location_is = 'In Stock' 
GROUP BY t.mac_address_is; 
+0

這將列出00xxF7以及和OP是明確的,它不想被列出值。 – Shadow

相關問題