本文主要是介绍我和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
这篇关于我和postgreSQL的二三事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!