tp6 union和unionAll使用

前置条件:每个union方法相当于一个独立的SELECT语句。

UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

故表结构必须相同

union all是将连接的两个查询结果表连接起来;
union是将连接的两个查询结果表连接起来并做去重处理;

union和union all的区别
union要进行重复值扫描做去重处理,所以效率低。如果合并没有刻意要删除重复行,建议使用Union All

eg1:
$a = Db('edu_testtable_one')->field('name')
    ->table('edu_testtable_one')
    ->union('SELECT name from edu_testtable_two')
    ->union('SELECT  name from  edu_testtable_three')
    ->select();

eg2:
$a = Db('edu_testtable_one')->field('name')
    ->table('edu_testtable_one')
    ->union(['SELECT name from edu_testtable_two', 'SELECT  name from  edu_testtable_three'])
    ->select();

eg1等同eg2  查询结果如下:

tp6 union和unionAll使用_第1张图片

 

 eg3:

$a = Db('edu_testtable_one')->field('name') ->table('edu_testtable_one') ->unionAll('SELECT name from edu_testtable_two') ->unionAll('SELECT name from edu_testtable_three') ->select();

eg4:

$a = Db('edu_testtable_one')->field('name') ->table('edu_testtable_one') ->union(['SELECT name from edu_testtable_two', 'SELECT name from edu_testtable_three'], true) ->select();

eg3等同eg4  查询结果如下:

 tp6 union和unionAll使用_第2张图片

 

你可能感兴趣的:(sql,数据库)