我想以字符串形式从MySQL获取数据

vlju58qv  于 2022-09-18  发布在  Java
关注(0)|答案(1)|浏览(193)
DB::table('follow_ups')
->select(
  'created_at as start',
   DB::raw('count(*) as title')
)->groupBy('created_at')->get()->toArray();

上面的查询以整数形式返回标题,我希望以字符串形式返回此值

mi7gmzs6

mi7gmzs61#

Count(*)是一个聚合函数,它将对组中不同的标题进行计数。如果您想获取所有标题,则需要一个不同的聚合函数,该函数可以(以某种方式)返回组中的所有成员。有一个选项通常是可用的(即,即使在较旧的MySQL版本中也是如此):

组连接(_C)

DB::table('follow_ups')
->select(
  'created_at as start',
   DB::raw('GROUP_CONCAT(title) as title')
)->groupBy('created_at')->get()->toArray();

这将返回通过您指定的分隔符连接的所有组成员(如果未指定,则默认为,)

较新的MySQL版本也有JSON_ARRAYAGG

DB::table('follow_ups')
->select(
  'created_at as start',
   DB::raw('JSON_ARRAYAGG(title) as title')
)->groupBy('created_at')->get()->toArray();

这将以json数组的形式返回结果,然后可以使用json_decode($row['title'],true)对其进行解码

第二种方法的优点是,在组成员包含分隔符的情况下,更容易获得组的各个值,例如,有一些标题包含逗号,因此GROUP_CONCAT有点无用。

注意:据我所知,这两个函数都是特定于MySQL/MariaDB的,因此,如果您计划使数据库可移植,您可能希望避免使用它们,并寻找与ANSI SQL兼容的替代函数。

相关问题