mysql查询在日期上未提供分组依据的任何结果

时间:2019-03-17 09:06:43

标签: mysql sql database

我正在创建一个预订日记,需要在预订日记上显示客户信息,预订状态和描述。数据库就像

id | BookingRef | CusotmerName | Status | InDate | InTime | BookingDate | Details |

我想按时间升序显示信息,但需要在日期上对它进行分组。 例如,如果记录是

id | BookingRef | CusotmerName | Status | InDate | InTime | BookingDate | Details |
--------------------------------------------------------------------------------------
1 | 4656AB | John Smith | Open | 17-03-2019 | 08:30 | 16-03-2019 14:30 | Want to check my glasses    
2 | 4554AB | Rick Ronald | Open | 17-03-2019 |08:55 | 16-03-2019 14:30 | Want to check my glasses    
3 | 4434AB | Serra Willa | Open | 17-03-2019 |10:05 | 16-03-2019 14:30 | Want to check my glasses    
4 | 4954AB | Jay Banker | Open | 18-03-2019 |09:25 | 16-03-2019 14:30 | Want to check my glasses    
5 | 4154AB | Damien Baker | Open | 19-03-2019 |11:55 | 16-03-2019 14:30 | Want to check my glasses

这些数据应显示为

17-03-2019    
John Smith | 08:30 | Want to check my glasses | Open    
Rick Ronald |08:55 | Want to check my glasses | Open    
Serra Willa |10:05 | Want to check my glasses | Open    
18-03-2019
Jay Banker | 09:25 | Want to check my glasses | Open    
19-03-2019    
Damien Baker |11:55 | Want to check my glasses | Open

我的查询会提取数据,但是我需要将其与InDate分组,所以我使用了:

select *
from appointments ASC InDate; 

这会产生以下错误:

select *
from appointments
GROUP BY InDate; 

错误:

  

mysqli_query():(42000/1055):SELECT列表的表达式#1不在   GROUP BY子句,包含非聚合列   'appdb.appointments.id'在功能上不依赖于列   在GROUP BY子句中;这与   sql_mode = only_full_group_by

有什么建议,我如何才能实现自己想要的结果?

1 个答案:

答案 0 :(得分:0)

这个评论太长了。

SQL结果集(如SQL表)由列和行组成。 每一行都有相同的列集。这是使用SQL时非常重要的原则。

您想要的结果集似乎具有两种类型的行。一个带有单个日期,另一个带有一堆列。像这样结构化,您无法使用SQL返回它。它完全超出了语言功能的范围。说,就像使用Python清洁浴室一样。

通过将每一行转换为单个字符串或将日期放在CustomerName列中并将其余各列留空,可以实现。但是,这些确实是骇客。获得所需格式的数据的更好方法是在应用程序层进行处理。