我想知道爲什麼這個查詢不起作用。這是查詢生成器語句: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