Order:sn
Procedures:sn,status
1、 有訂單表和流程表。
訂單表含有訂單的詳細信息【假設沒有訂單狀態哈】,每個訂單有好多種狀態:已付款、處理中、待收貨等等?,F在的需求可能是查詢訂單狀態是待收貨的所有訂單的信息。
【答】先找到最新狀態是待收貨的所有訂單,然后和訂單表做一個left join,就可以得到了。
一、 先找最新狀態是待收貨的所有訂單。
本來拍腦袋一想是group by order by 取第一條,然后試了一下,發現group by取回來的并不是最新狀態的,而是分組后的第一條。這是因為在MySQL中語句的執行順序是先執行group by 然后執行order by .很明顯這就不可能得到最新的一條了。我們可以這樣查出每個訂單的最新狀態
select sn,max(status) from procedures group by sn .
正確的是下面的寫法,自己和自己做個join,最后再和order join。
SELECT a.id, a.sn, a.created_at,a.type FROM (SELECT sn, max(created_at) created_at FROM procedures GROUP BY sn ) b JOIN procedures a ON a.sn = b.sn AND a.created_at = b.created_at where a.type=11
select c.*,tmp.type from complaints as c right join (
SELECT a.id, a.sn, a.created_at,a.type FROM (SELECT sn, max(created_at) created_at FROM procedures GROUP BY sn ) b JOIN procedures a ON a.sn = b.sn AND a.created_at = b.created_at where a.type=11
) as tmp on tmp.sn=c.sn
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。