首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用max子句的MySql查询

问不使用max子句的MySql查询
EN

Stack Overflow用户
提问于 2014-10-01 09:45:38
回答 3查看 661关注 0票数 1

我想知道为什么这个查询不起作用。这是查询生成器语句:

代码语言:javascript
复制
$this->getBuilder()
    ->select('code', 'name', 'date')
    ->groupBy('name', 'code')
    ->having('MAX(date)')
    ->get()

这会导致此错误:

代码语言:javascript
复制
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查询,它可以工作:

代码语言:javascript
复制
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>

如果我去掉“拥有”部分,它就能工作了。这有什么问题吗?

提前谢谢你。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-01 09:54:02

你需要havingRaw

代码语言:javascript
复制
$this->getBuilder()
    ->select('code', 'name', 'date')
    ->groupBy('name', 'code')
    ->havingRaw('MAX(date)')
    ->get()
票数 2
EN

Stack Overflow用户

发布于 2014-10-01 09:50:41

你在语法上有问题。

代码语言:javascript
复制
$this->getBuilder()
     ->select('code', 'name', 'date')
     ->groupBy('name', 'code')
     ->having('MAX(date)')
     ->get()

在这里,拥有子句需要像->having('MAX(date)', '>=', '2014-09-25')这样的3个参数

注意:第一个参数是列名,第二个参数是比较操作符,第三个参数是比较值。

票数 0
EN

Stack Overflow用户

发布于 2014-10-01 09:53:32

代码语言:javascript
复制
$condition = 'MAX(date)';

$this->getBuilder()
    ->select('code', 'name', 'date')
    ->groupBy('name', 'code')
    ->having($condition)
    ->get()

这也是可行的。如果您不想为want子句提供参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26138511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档