2016-03-28 58 views
0

我必須編寫一個查詢來使用所選日期和所選類別從表中檢索數據。我寫了一個查詢,並沒有按預期提供正確的數據。如果action列的值爲'AD',它應該只查詢最大爲actiondate的行。具有最大和特定值的MySQL行

INSERT INTO goldstockvaluation SELECT sh.stockid, sh.description, sh.branch, sh.grossweight, sh.pureweight, sh.purity, sh.goldcarat, sh.mcpergram, sh.goldpergram, sh.fixgold, CURDATE() 
FROM stock_history sh 
JOIN (

SELECT stockid, branch,ACTION , MAX(actiondate) AS MaxDateTime 
FROM stock_history 
GROUP BY stockid,branch,ACTION 
)groupedsh ON sh.stockid = groupedsh.stockid 
AND sh.actiondate = groupedsh.MaxDateTime 
AND sh.branch = groupedsh.branch 
AND sh.action = groupedsh.action 
AND sh.branch = '8' 
AND sh.categoryid = 'G' 
AND sh.action = 'AD' 
AND sh.actiondate <= '2016-03-28 23:59:59' 

這是查詢出有action'AD',並有max(actiondate)行。

+0

什麼是主鍵?使用'SHOW CREATE TABLE stock_history'併發布結果。 –

回答

0

要與max(action_date)查詢,則需要使用子查詢,例如:

select field1, field2 
from table 
where 
sh.action = 'AD' 
and sh.actiondate = (
    select max(sh.actiondate) 
     from table 
     where sh.action = 'AD' 
); 
+0

MAX操作日期應該小於選定日期,並且只有在最大條目值具有「AD」的情況下才會返回。 – Sumith

+0

我解釋瞭如何查詢它何時包含與任何字段的'max'值進行比較。您可以根據需要添加條件。 –

+0

這將只返回一行。 OP每組需要一行('GROUP BY stockid,branch,ACTION') –

相關問題