MYSQL 合并查询

问题:

四个数据库表属于同一级别,拥有部分相同字段如id, pondid,fixcosttype,value,systime

要求:四张表合并查询按照时间由早到晚倒序排列


解决方案:

Sql查询采用union all实现。

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。


union all 与union的区别

  • UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

  • UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。

,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

SQL语句具体实现:

SELECT c.id,
         c.pondid,
         c.value,
         c.sysTime,
         c.fixcosttype
FROM (
        (SELECT id,
         pondid,
         value,
         sysTime,
         fixcosttype    
         FROM RentAndLabourCost        
         ORDER BY sysTime DESC)

      UNION ALL
        (SELECT id,
         pondid,
         value,
         sysTime,
         fixcosttype                
         FROM SeedlingCost        
         ORDER BY sysTime DESC)

         UNION ALL
          (SELECT id,
         pondid,
         value,
         sysTime,
         fixcosttype            
         FROM MainSale     
         ORDER BY sysTime DESC)

         UNION ALL
          (SELECT id,
         pondid,
         value,
         sysTime,
         fixcosttype                
         FROM PolycultureSale     
         ORDER BY sysTime DESC)
         ) c
ORDER BY sysTime DESC 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值