区分单个字段(SQL查询)

By simon at 2018-02-28 • 0人收藏 • 24人看过

我必须按以下查询,这可以正常工作,并按照我的意愿为我提供结果:

SELECT * FROM dv.event 
WHERE status like 'online' OR ATTEMPTS < 5 
GROUP BY CUSTOMER_ID 
ORDER BY by CREATION_DATE ASC LIMIT 5;
所以,如果我有4个条目和1,4个条目同样CUSTOMER_ID,我最终得到3 作为结果,没有第四个条目。这是好的,但我不确定 RIGHT的方式来做到这一点。此外,它不像预期的那样使用Hibernate:
 expression not in aggregate or GROUP BY columns: EVENT0_.ID

1 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

那么,与质量代码不兼容。既然你正在分组,它 最好明确告诉哪些列应该是选择。当你有 分组时,所选列应该是你正在分组的那个列 聚合功能(如SUM()或COUNT()) 列。 错误表明 - 有列,你正在选择和 您不是按分组。例如,你有这张桌子。

CustomerID   EventID   Date
20           10        2018-02-02
20           30        2018-03-03
所以,如果您通过CustomerID进行分组,则您拥有各种事件数据f或CustomerID 20。 这些数据会丢失,因为分组每行会产生一行。你可以选择 第一个事件为:
Select t1.CustomerID,
MIN(t1.Date) as First_Event_Date <--MIN is aggregating function.
From MyTable t1

GROUP BY CustomerID
Ť如果你想要事件ID,你应该回顾CustomerID上的表格 和First_Event_Date。 如果你只是使用
,最好是你得到一个错误,在最坏的情况下你会隐含失去 数据,你可能知道或不知道。

登录后方可回帖

Loading...