谁一开始就是大神?

查询时union查完后怎么用limit限制查完的数据?[2.0]

我想查询一个表的数据,优先查询地区是本地的

$find=$this->find()->where(['>','p_partytime',date('Y-m-d H:i:s',time())])->andWhere(['p_area'=>$area])->orderBy('p_partytime asc');
$not=$this->find()->where(['>','p_partytime',date('Y-m-d H:i:s',time())])->andWhere(['<>','p_area',$area])->orderBy('p_partytime asc');
return $find->union($not)->offset($offset)->limit(10)->asArray()->all();

但执行的sql语句是这样的

(SELECT * FROM `pet_party` WHERE (`p_partytime` > '2016-07-30 18:24:15') AND (`p_area`='2') ORDER BY `p_partytime` LIMIT 10 OFFSET 10) UNION ( SELECT * FROM `pet_party` WHERE (`p_partytime` > '2016-07-30 18:24:15') AND (`p_area` <> '2') ORDER BY `p_partytime` )

而我想要执行的sql语句是这样的

(SELECT * FROM `pet_party` WHERE (`p_partytime` > '2016-07-30 18:24:15') AND (`p_area`='2') ORDER BY `p_partytime`) UNION ( SELECT * FROM `pet_party` WHERE (`p_partytime` > '2016-07-30 18:24:15') AND (`p_area` <> '2') ORDER BY `p_partytime` ) LIMIT 10 OFFSET 10

前面先限制了条数在第一条语句里,而我想两条都查完之后在limit限制条数
请问怎么在我model查询的代码基础上更改?
麻烦各位大神帮忙!

我个人认为吧,如果语句复杂,不如直接写sql。
你这个可以这么改
改成:
最后生成的语句类似如此:

赞(0) 打赏
未经允许不得转载:菜鸟之家 » 查询时union查完后怎么用limit限制查完的数据?[2.0]

评论 抢沙发

登录

找回密码

注册