2012-10-24 97 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