
SQL
喜剧新人
每一次改错,都是一次进步。
展开
-
insert select 过滤掉重复数据
INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。table1和table2表结构一样时:INSERT INTO table2SELECT * FROM table1;table1和table2表结构不一样时:INSERT INTO table2(field1,field2,field3)SELECT field1,field2,fie...原创 2019-11-07 11:16:15 · 3879 阅读 · 0 评论 -
数据库查询字段为空时,返回0
oracleselect nvl(字段名,0) from 表名;sqlserverselect isnull(字段名,0) from 表名;mysqlselect ifnull(字段名,0) from 表名;postgresqlselect coalesce(字段名,0) from 表名;原创 2019-11-06 16:12:13 · 2465 阅读 · 0 评论 -
Postgre合并多行数据为一行
业务情景描述:用户需要一行展示所有的文件名称,比如:你的1.txt、2.txt、3.txt未上传成功,请核查!SELECT * FROM fileTable--查询结果如下:1.txt2.txt3.txt方式一:使用string_agg函数,定义:string_agg(‘要合并的字段’,‘分隔符’),直接把一个表达式变成字符串SELECT string_agg (filenam...原创 2019-11-06 14:14:00 · 2324 阅读 · 0 评论 -
Postgresql 填充所有的时间点
最近使用有个业务需要展示20190101和20190106所有的时间段,例如201901012019010220190103201901042019010520190106但是数据库中存的只有以下20190101201901022019010420190106那我们需要把20190103、20190105填充进去。方式一:新建个存储日期的temp表(把要展示的时间点...原创 2019-11-06 11:10:03 · 610 阅读 · 0 评论 -
Postgresql 按30分钟、小时、天分组
按30分钟统计:shool_time格式为varchar, 例如201911050808、201911050820、201911050842分组后结果:20191105 080020191105 083020191105 090020191105 0930注:小于30分钟的按00统计,大于30分钟的按30统计SELECT name,sex,(SELECT (SELECT to...原创 2019-11-05 14:21:59 · 6986 阅读 · 2 评论