【发布时间】:2020-09-23 02:22:52
【问题描述】:
如何在查询生成器中表达此代码。我正在使用 Laravel 6。
SELECT * FROM feedback GROUP BY noTicket having count(`status`) < 2
我的代码:
$feedback = DB::table('feedback')
->groupBy('noTicket')
->having('count(status)', '<', 2)
->get();
错误代码:
SQLSTATE[42000]: Syntax error or access violation: 1055 'sifora.feedback.idFeedback' isn't in GROUP BY
(SQL: select * from `feedback` group by `noTicket` having `count(status)` < 2)
我的代码有什么问题? sql 代码与查询生成器之间似乎匹配。
谢谢
【问题讨论】:
-
除非您按所有列分组,否则
SELECT *和GROUP BY无效且毫无意义。我也怀疑有一个专栏count(status)。 -
您想通过查询实现什么目标?
-
@party-ring:这个 mysql 查询已经在 Navicat 上测试过并且可以完美运行。我想将所有相同的 noTicket 分组并选择 noTicket 哪个状态
-
@Ikra 请分享您的表结构、重现它的示例数据和预期结果。由于分组依据,您的查询不兼容。
-
@Ersoy:我的票务概念是,如果有人创建票并回复,它将存储在反馈表中。新工单用 status=1 标记,分配工单用 status=2 标记。我只想显示状态 = 1 且尚未分配的新票。因为 1 noTicket 可以有多个响应,并且状态将从 1(等待响应)、2(进行中)、3(已完成)、4(已关闭)示例 noTicket = 4 --> 我的窗口被打破 --> status = 1 noTicket = 4 --> 好的,我们将检查并修复 --> status = 2 所以,noTicket = 4 不能出现在新票中
标签: mysql laravel eloquent query-builder laravel-6