我在使用 zend 框架 mysql groupby 查询时遇到问题。我想要实现的是这个查询
SELECT * FROM `price_list` AS `pl`
GROUP BY
CASE WHEN `pl`.`sub_folder` IS NULL THEN
`pl`.`id`
ELSE
`pl`.`sub_folder`
END
ORDER BY `pl`.`date_added` DESC
这是我用 zend 方式尝试的
$sql = $this->select()->setIntegrityCheck(false);
$sql->from(array('pl'=>$this->_name), array(''))
->columns($cols)
->group("case when pl.sub_folder is null then pl.id else pl.sub_folder end");
但是在 case 条件下输出带有错误引号的 sql 字符串:
SELECT * FROM `price_list_pdf` AS `pl`
GROUP BY `CASE WHEN pl`.`sub_folder is null then
pl`.`id
ELSE
pl`.`sub_folder
end`
ORDER BY `pl`.`date_added` DESC
如何清除字符串中的这个`?或者有什么更好的方法吗?请帮助..
最佳答案
对于未转义的查询,使用Expressions
like
$sql = $this->select()->setIntegrityCheck(false);
$sql->from(array('pl'=>$this->_name), array(''))
->columns($cols)
->group(new Zend_Db_Expr("case when pl.sub_folder is null then pl.id else pl.sub_folder end"));
关于php - Zend Framework 分组案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20465009/