![](/img/trans.png)
[英]How to select one row with max(select field) and another (specific field)?
[英]query to find data based on max of one field and specific value of another
我的SQL技能很少,所以我希望有人能幫助我。 我正在編寫一個PHP腳本,其中需要執行一些SQL查詢:
我有一個名為product_status的表,該表具有3個4列:id prod_id status_date status_code
因此,如果我們考慮ID為1000的產品,則該表將具有以下條目:
id prod_id status_date status_code
1 1000 2015-09-01 08:20:35 100
2 1000 2015-09-01 09:22:40 200
3 1000 2015-09-01 09:35:51 300
4 1000 2015-09-01 09:42:55 400
現在,假設說300是“缺貨”的狀態碼。 我想寫一個查詢,對於給定的日期,它可以為我提供當天結束時沒有缺貨的所有產品。 換句話說,如果我為日期“ 2015-09-01”查詢產品,它應該給我產品1000,因為300不是該表中該日期該產品的最后條目。
我無法編寫對此有效的查詢:(我的查詢是:
select prod_id, status from product_status
where status_code != 300
group by prod_id, status
having date(max(status_date)) = '2015-09-01'
這也會返回給定日期的最終狀態不是300的產品。有人可以幫助糾正我的SQL嗎?
您想要按狀態過濾,而不是按以下查詢進行分組:
select prod_id, status from product_status
where status_code != 300
group by prod_id
having date(max(status_date)) = '2015-09-01'
試試這個查詢
SELECT prod_id,
SUBSTRING_INDEX(GROUP_CONCAT(status_date ORDER BY status_date DESC), ',', 1) as max_date,
SUBSTRING_INDEX(GROUP_CONCAT(status_code ORDER BY status_date DESC), ',', 1) as recent_code
FROM product_status
GROUP BY prod_id
HAVING recent_code != '300' AND date(max_date) = '2015-09-01'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.