利用 并运算 union / union all 纵向合并数据表

并运算,则是将两次查询结果给并起来,大致语法结构:
select xxx union select xxx

  • union:输出结果时去除重复项(当数据量很大时使用union去重的排序开销很大)
  • union all:将两个集合的并集全部输出

例如:
我有两张表:

shuoshuo_IDshuoshuo_usershuoshuo_contentshuoshuo_time
1aaa啦啦啦2015-06-20
2bbb哈哈哈2015-11-20
3ccc嘿嘿嘿2016-05-20

表1:shuoshuo_info

rizhi_IDrizhi_userrizhi_titlerizhi_contentrizhi_time
1aaalalala啦啦啦2015-06-20
2bbbhahaha哈哈哈2015-11-20
3cccheiheihei嘿嘿嘿2016-05-20

表2:rizhi_info

我们可以通过union all 的方法将这位用户发布过的内容做一个汇总,创建好一个视图,当我们要集中输出时,只要查找视图就好

select `shuoshuo_user` AS `user`,`shuoshuo_content` AS `content`,
`shuoshuo_time` AS `time` from `shuoshuoinfo` 
union all 
select `rizhi_user`,`rizhi_content` ,`rizhi_time` from `rizhiinfo`
我们要注意的是,在使用union时,前后两张表选择的字段数、每个字段的类型应该相同,最终生成表的字段名会以第一张表为准,所以我们用 as 给字段取一个别名,方便区分

补充点:

  • 用text还是varchar:
    一般在0-2005 用varchar,在8000以下用varchar(max),超过用 text类型

  • 在增加记录的同时添加当前时间:
    1.数据类型可以选择varchar 然后写入的时候用now(),要写明时间字段,并赋值now()
    2.数据类型选择timestemp,加上默认值CURRENT_TIMESTAMP,不用给时间字段赋值,在数据库系统自动填上时间

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值