2012-10-24 240 views
-4

我有一個表包含客戶ID和購買日期,我通過客戶分羣,但我想最後購買日期顯示不是第一次購買日期集團通過/順序由MySQL

我試着

GROUP BY客戶

ORDER BY而purchaseDate DESC

+5

發佈您的實際查詢。我懷疑你正在向選擇列表中的許多列應用「GROUP BY」,這是MySQL允許的(其他RDBMS不會)。你可能需要一個'MAX()'集合。 –

+0

你可以發佈你的整個SQL語句嗎? – Aaron

+1

mySql允許這種廢話的事實是一種完全的恥辱...... –

回答

2

哪購買之日起,你需要什麼?如果最後一次購買日期,然後查詢應該是這樣的:

SELECT *, max(purchasedate) FROM table1 GROUP BY customer 
+0

'SELECT *'是很差的練習。你應該總是指定一個列表。 – Kermit

2

您需要發佈您的實際查詢以及上下文我們來幫助你更好。

看起來好像你錯過了聚合。你可以試試這個:

SELECT customer, MAX(purchasedate) 
FROM sparkles 
GROUP BY customer 
+1

'從閃閃發光的左加入獨角獸在sparkles.luminescence = unicorns.rainbow_radius' –

+0

@MichaelBerkowski我嘗試*注入閃閃發光和獨角獸,我可以。 – Kermit

+0

傳奇.......... – Gfoxxy93

2

沒有看到實際的查詢,您可能能夠使用類似這樣:

select t1.customerid, t1.purchasedate, t1.othercol1, t1.othercol2, t1.othercol3 
from yourtable t1 
inner join 
(
    select max(purchasedate) purchasedate, customerid 
    from yourtable 
    group by customerid 
) t2 
    on t1.customerid = t2.customerid 
    and t1.purchasedate = t2.purchasedate 
order by t1.purchasedate desc 

或者你可以將max()聚合函數的purchasedate