我想知道为什么这个查询不起作用。这是查询生成器语句:
$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>如果我去掉“拥有”部分,它就能工作了。这有什么问题吗?
提前谢谢你。
发布于 2014-10-01 09:54:02
你需要havingRaw
$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->havingRaw('MAX(date)')
->get()发布于 2014-10-01 09:50:41
你在语法上有问题。
$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->having('MAX(date)')
->get()在这里,拥有子句需要像->having('MAX(date)', '>=', '2014-09-25')这样的3个参数
注意:第一个参数是列名,第二个参数是比较操作符,第三个参数是比较值。
发布于 2014-10-01 09:53:32
$condition = 'MAX(date)';
$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->having($condition)
->get()这也是可行的。如果您不想为want子句提供参数。
https://stackoverflow.com/questions/26138511
复制相似问题