码迷,mamicode.com
首页 > 编程语言 > 详细

查询多表数据同时需要排序及分页

时间:2019-01-13 13:07:01      阅读:441      评论:0      收藏:0      [点我收藏+]

标签:one   mit   bubuko   多表   sel   code   merge   inf   的区别   

1、使用union

SELECT
    *
FROM
    (
        SELECT 1 AS type, `name`, number, money FROM test1
    UNION
        SELECT 2 AS type, `name`, number, money FROM test2
    ) a
ORDER BY
    number
LIMIT 0, 4

 技术分享图片

 

 在laravel中实现:

public function unionTest()
    {
        $sel = [
            1 as type,
            name,
            number,
            money,
        ];
        $test1 = Test::select(DB::raw(implode(,, $sel)));

        $sel = [
            2 as type,
            name,
            number,
            money,
        ];
        $result = Test2::select(DB::raw(implode(,, $sel)))
            ->union($test1);

        $sql = $result->toSql();
        $result = DB::table(DB::raw("($sql) as a "))
            ->mergeBindings($result->getQuery())
            ->limit(4)
            ->offset(4)
            ->orderBy(number, asc)
            ->get();
        dd($result);
    }

技术分享图片

 备注:

union和union all的区别:

union all不会去重:

技术分享图片

union会去重:

技术分享图片

 

查询多表数据同时需要排序及分页

标签:one   mit   bubuko   多表   sel   code   merge   inf   的区别   

原文地址:https://www.cnblogs.com/zhengchuzhou/p/10262260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!