我想知道为什么这个查询不起作用。这是查询构建器语句:
$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>
如果我删除了'部分它的工作。这有什么问题?
提前谢谢。
答案 0 :(得分:2)
您需要havingRaw
:
$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->havingRaw('MAX(date)')
->get()
答案 1 :(得分:0)
语法中存在问题。
$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->having('MAX(date)')
->get()
这里,having子句需要3个参数,如->having('MAX(date)', '>=', '2014-09-25')
注意:第一个参数用于列名,第二个用于比较运算符,第三个用于比较值。
答案 2 :(得分:0)
$condition = 'MAX(date)';
$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->having($condition)
->get()
这也有效。如果你不想给参数赋予条款。