我想知道为什么这个查询不起作用。这是查询生成器语句:MySql查询不能使用max子句
$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->having('MAX(date)')
->get()
这将导致此错误:
SQLSTATE[HY000]: General error: 1 near "?": syntax error (SQL: select "code", "name", "date" from "rival_rates" group by "name", "code" having "MAX(date)" ) (Illuminate\Database\QueryException)
我不知道哪里是问号,没有任何参数。
如果我通过mysql命令行运行SQL查询它的工作原理:
mysql> select code, name, date from rival_rates group by name, code having MAX(date);
+------+------+------------+
| code | name | date |
+------+------+------------+
| 100 | tal | 2014-10-01 |
| 100 | tal2 | 2014-10-05 |
| 200 | tal2 | 2014-10-03 |
+------+------+------------+
3 rows in set (0.00 sec)
mysql>
如果我删除它的工作“具有”部分。那有什么问题?
预先感谢您。
'选择代码,名称,MAX(日)从名字rival_rates组,代号'唐'知道laravel但是这应该是您的查询 – Mihai 2014-10-01 09:59:12
@Mihai我不是争论查询本身。在我的回答中,有一种方法可以执行这样的查询,而不用讨论它是否有意义。 – 2014-10-01 10:03:56
你认为查询是错误的?我需要每个产品代码和不同竞争对手价格的最新价格,并且日期不会同时更新,因此日期可能会有所不同。如果有更好的方法... – 2014-10-01 10:18:26