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

Posted zhengchuzhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询多表数据同时需要排序及分页相关的知识,希望对你有一定的参考价值。

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会去重:

技术分享图片

 

以上是关于查询多表数据同时需要排序及分页的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 实践:实现多条件筛选搜索排序及分页的表格功能

Vue.js 实践:实现多条件筛选搜索排序及分页的表格功能

spring data mongodb Query 及分页

分布式电商项目(04)--商品列表查询及分页

linq 大数据 sql 查询及分页优化

sql 语句按字段指定值排序及分页