Mysql SQL查询在Workbench中工作,但在Laravel中不工作
我有一个问题:Mysql SQL查询在Workbench中工作,但在Laravel中不工作,mysql,laravel,laravel-5,group-by,sql-order-by,Mysql,Laravel,Laravel 5,Group By,Sql Order By,我有一个问题: SELECT DATE_FORMAT(created_at,'%Y-%m') as x, COUNT(created_at) as y FROM table GROUP BY DATE_FORMAT(created_at,'%Y-%m') ORDER BY id DESC LIMIT 12; 它在MySQL Workbench中工作,但当我使用DB::select()在Laravel中粘贴查询时返回错误如下: SQLSTATE[42000]: Syntax error or a
SELECT DATE_FORMAT(created_at,'%Y-%m') as x, COUNT(created_at) as y FROM table GROUP BY DATE_FORMAT(created_at,'%Y-%m') ORDER BY id DESC LIMIT 12;
它在MySQL Workbench中工作,但当我使用DB::select()在Laravel中粘贴查询时代码>返回错误如下:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'user.table.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: SELECT DATE_FORMAT(created_at,'%Y-%m') as x, COUNT(created_at) as y FROM table GROUP BY DATE_FORMAT(created_at,'%Y-%m') ORDER BY id DESC LIMIT 12;)
当我删除orderbyiddesc
时,它工作得很好,但我需要反转表格,只选择最后12行。您知道如何修复它吗?您正在使用的group by和group by与您的ID不同,因此不会在此查询中选择。
您可以使用order by x并在查询中选择ID,而不仅仅是x
和y
。我不能。这些数据将被json编码并传递到Morris.js linechart,但我已经解决了我的问题。我将id添加到GROUPBY语句中,它可以工作!如果要执行整个查询,请尝试DB::raw()。如果您使用DB::select(),则无法在其中插入整个查询。请发布您的laravel代码。这是更好地理解你可能在代码中丢失的地方,它已经解决了。这是我的代码->$data=json_encode(DB::select(“选择日期_格式(创建时间,'%Y-%m'))作为x,从表组按日期(创建时间,'%Y-%m')格式(创建时间,'%Y-%m'),id顺序按id描述限制12;”);