我和postgreSQL的二三事

今天遇到这段SQL:

select itemname,name ,pushdate,mark,queryid,'0' mtype,null departmentName from push where phone = '12345678' 
union select m.mess_content itemname,m.mess_patient username,m.update_date pushdate,m.mess_status||'' mark,m.mess_id queryid,'1' mtype,m.mess_depname departmentName from mess m where m.mess_phone='12345678'  order by pushdate desc

有几点不是特别明白 (我承认我SQL基础超级差):
首先测试表
这里写图片描述

第一个:’0’ mtype 这是什么?

select ‘0’ mtype from cities
请看结果:
这里写图片描述

解释为:结果集增加名字为mtype的字段,值全部都是0当然下面的那句是’1’ mtype,所以值全部为1

第二个:m.mess_status||” 这是什么?

select ‘北京市’||city_name from cities
请看结果:
这里写图片描述
select ‘北京市’||city_name hah from cities
请看结果:
这里写图片描述
select city_name||’有美食’ from cities
请看结果:
这里写图片描述
select city_name||’有美食’ chanmao from cities
请看结果:
这里写图片描述

解释:|| 是将字符串和字段相连接
根据以上四种比较,我想大家很容易看出区别,就是要给这个列命名,不命名的话,系统自动命名

第三个:union

select itemname,name ,pushdate,mark,queryid,'0' mtype,null departmentName from push where phone = '12345678' 
union select m.mess_content itemname,m.mess_patient username,m.update_date pushdate,m.mess_status||'' mark,m.mess_id queryid,'1' mtype,m.mess_depname departmentName from mess m where m.mess_phone='12345678'  order by pushdate desc

请看结果:
这里写图片描述

**解释:当前SQL语句中解释将两个结果集累计起来,如果重复只会出现 一条记录,同时进行默认规则的排序
union(或称为联合)的作用是将多个结果合并在一起显示出来。不包括重复行,同时进行默认规则的排序。
看了union 就不得不看看union all:
union all:的作用是将多个结果合并在一起显示出来,包括重复行,不进行排序。**

 select itemname,name ,pushdate,mark,queryid,'0' mtype,null departmentName from push where phone = '12345678' 
union all select m.mess_content itemname,m.mess_patient username,m.update_date pushdate,m.mess_status||'' mark,m.mess_id queryid,'1' mtype,m.mess_depname departmentName from mess m where m.mess_phone='12345678'  order by pushdate desc   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值