【mysql】mysql union查詢,實現分頁查詢和count統計


 

說明:

UNION 操作符用於合並兩個或多個 SELECT 語句的結果集。 請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。否則會報錯。 union和 union all的關系和區別: 1.UNION ALL 命令和 UNION 命令幾乎是等效的,不過 UNION ALL 命令會列出所有的值。 2.即 :union會對合並的兩個或多個查詢的結果集 進行 去重合並的操作。 union all則不會去重,只做合並,因此查出的結果集中 會有重復的記錄。

 

示例:

分頁查詢sql

( SELECT DISTINCT c.u_id, c.create_time FROM 表A a LEFT JOIN 表B b ON b.u_id = a.u_id AND b.yn = 1
        LEFT JOIN 表C c ON c.u_id = a.u_id AND c.yn = 1
        LEFT JOIN 表D d ON d.u_id = a.u_id AND d.yn = 1 
    WHERE
        1 = 1 
        AND a.yn = 1 
        AND b.vender_id IN ( 1 ) AND b.join_behavior = 1 
        AND b.store_join_type = 1 ) UNION ( SELECT DISTINCT c.u_id, c.create_time FROM 表A a LEFT JOIN 表B b ON b.u_id = a.u_id LEFT JOIN 表C c ON c.u_id = a.u_id LEFT JOIN 表D d ON d.u_id = a.u_id WHERE
        1 = 1 
        AND a.yn = 1 
        AND b.vender_id IN ( 1 ) AND b.join_behavior = 1 
        AND a.join_value IN ( 6 ) AND b.store_join_type = 2 ) ORDER BY create_time DESC LIMIT 0,200;

 

count統計sql:

select 
     COUNT(*) FROM ( ( SELECT DISTINCT c.u_id, c.create_time FROM 表A a LEFT JOIN 表B b ON b.u_id = a.u_id AND b.yn = 1
        LEFT JOIN 表C c ON c.u_id = a.u_id AND c.yn = 1
        LEFT JOIN 表D d ON d.u_id = a.u_id AND d.yn = 1 
    WHERE
        1 = 1 
        AND a.yn = 1 
        AND b.vender_id IN ( 1 ) AND b.join_behavior = 1 
        AND b.store_join_type = 1 ) UNION ( SELECT DISTINCT c.u_id, c.create_time FROM 表A a LEFT JOIN 表B b ON b.u_id = a.u_id AND b.yn = 1
        LEFT JOIN 表C c ON c.u_id = a.u_id AND c.yn = 1
        LEFT JOIN 表D d ON d.u_id = a.u_id AND d.yn = 1
    WHERE
        1 = 1 
        AND a.yn = 1 
        AND b.vender_id IN ( 1 ) AND b.join_behavior = 1 
        AND a.join_value IN ( 6 ) AND b.store_join_type = 2 ) ) AS temp

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM