【发布时间】:2020-03-21 03:30:31
【问题描述】:
我有这 2 个函数执行 2 个不同的查询:
public function getListPerPage($limit, $offset) {
$dql = "SELECT b FROM Entities\Brain b WHERE b.status = '1' ORDER BY b.id DESC";
$query = $this->getEntityManager()->createQuery($dql);
与
public function getHiddenItems($limit, $offset, $brain_user_id) {
$dql = "SELECT b FROM Entities\Brain b WHERE b.status = '2'
AND b.user = :brain_user_id ORDER BY b.id DESC";
$query = $this->getEntityManager()->createQuery($dql);
$query->setParameter('brain_user_id', $brain_user_id);
我想将它们合并到一个函数和一个查询中,如何将这两个语句合并到一个查询中?
我在阅读许多其他问题时尝试使用 UNION,但对我不起作用。
我尝试使用 UNION 的方式是:
"(SELECT b FROM Entities\Brain b WHERE b.status = '1')
UNION (SELECT b FROM Entities\Brain b WHERE b.status = '2'
AND b.user = :brain_user_id) ORDER BY b.id DESC";
给我一个错误,也许我的语法错误?
【问题讨论】:
-
使用 UNION 显示您的非工作版本。使用Edit将其添加到您的问题中。
-
提到为什么要将两个查询合二为一?您想要一个数据库请求以提高性能吗?
-
@PM77-1 添加了 UNION 版本
-
@Hamid 对于我正在创建的函数,我需要它作为一个请求。
-
您有两个不同的 where 条件,因此您可以使用
SELECT b FROM Entities\Brain b WHERE (b.status = '2' AND b.user = :brain_user_id) or (b.status = '1') ORDER BY b.id DESC之类的内容进行一个简单的查询,然后在代码中分隔每个条件。它很容易编辑,而且速度也足够快,因为您对数据库引擎有一个请求,并且foreach的离线数据足够快
标签: php sql codeigniter