UNION操作用于合并两个或多个 SELECT 语句的结果集。

使用示例:

UNION 字符串方式

sql.union('SELECT name FROM think_user_1')
     .union('SELECT name FROM think_user_2')
     .select()

UNION 数组用法:

sql.union(['SELECT name FROM think_user_1','SELECT name FROM think_user_2']).select()

最终得到SQL

(SELECT name FROM think_user_1) UNION (SELECT name FROM think_user_2)

UNION ALL 字符串方式

sql.union('SELECT name FROM think_user_1',true)
   .union('SELECT name FROM think_user_2',true)
   .select()

UNION ALL 数组用法

sql.union(['SELECT name FROM think_user_1','SELECT name FROM think_user_2'],true).select()

最终得到SQL

(SELECT name FROM think_user_1) UNION ALL (SELECT name FROM think_user_2)

UNION 于 UNION ALL 唯一的区别就是有第二个参数并且为 true 即可

UNION , UNION ALL 组合使用

sql
    .union('SELECT * FROM think_user_1',true)
    .union('SELECT * FROM think_user_2',true)
    .union(['SELECT * FROM think_user_3','SELECT name FROM think_user_4'])
    .union('SELECT * FROM think_user_5',true)
    .select()

最终得到SQL

(SELECT * FROM think_user_1) UNION ALL  
(SELECT * FROM think_user_2) UNION ALL 
(SELECT * FROM think_user_3) UNION 
(SELECT name FROM think_user_4)  UNION  
(SELECT * FROM think_user_5)

你甚至可以这样做

sql
    .union(sql.table('think_user_1').select(),true)
    .union('SELECT * FROM think_user_5')
    .select()

最终得到SQL

(SELECT  * FROM think_user_1 WHERE id=1 ) UNION ALL  (SELECT * FROM think_user_2)

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

results matching ""

    No results matching ""