常用Mysql或者PostGresql或者Greenplum的语句总结。
1、使用mysql的union all可以同时查询出所有自己想要查询数据表的数据量。
select 'user' as tablename, count(*) from user
union all select 'teacher' as tablename, count(*) from teacher
union all select 'person' as tablename, count(*) from person
union all select 'student' as tablename, count(*) from student
order by tablename
2、使用mysql的union all可以同时查询出所有自己想要查询数据表的数据量。添加上限制条件进行查询。
select 'user' as tablename, count(*) from user where update_time>'2018-10-09'
union all select 'teacher' as tablename, count(*) from teacher where update_time>'2018-10-09'
union all select 'person' as tablename, count(*) from person where update_time>'2018-10-09'
union all select 'student' as tablename, count(*) from student where update_time>'2018-10-09'
order by tablename
3、使用Postgresql或者Greenplum的union all可以同时查询出所有自己想要查询数据表的数据量。添加上限制条件进行查询。
select 'user' as tablename, count(*) from user where update_time>to_date('2018-10-09 01', 'yyyy-mm-dd hh24')
union all select 'teacher' as tablename, count(*) from teacher where update_time>to_date('2018-10-09 01', 'yyyy-mm-dd hh24')
union all select 'person' as tablename, count(*) from person where update_time>to_date('2018-10-09 01', 'yyyy-mm-dd hh24')
union all select 'student' as tablename, count(*) from student where update_time>to_date('2018-10-09 01', 'yyyy-mm-dd hh24')
order by tablename
4、在Mysql数据库中,如果某个字段是换行的,如何去掉换行的字段,然后正常查询出来。
注意:char(10)换行键、char(13)回车键。
4.1、查询出多个数据表某条记录可能含有换行符的记录。
CONCAT()函数用于将多个字符串连接成一个字符串。
select * from user where name like CONCAT("%",char(),"%")
union all select * from teacher where name like CONCAT("%",char(),"%")
union all select * from person where name like CONCAT("%",char(),"%")
union all select * from student where name like CONCAT("%",char(),"%");
4.1、然后将换行和回车进行替换,将换行和回车换成''。这样做就将回车和换行替换完成。
replace(object,search,replace),把object中出现search的全部替换为replace。
select REPLACE(REPLACE(name, char(), ''), char(), '') as name from user where name like CONCAT("%",char(),"%")
union all select REPLACE(REPLACE(name, char(), ''), char(), '') as name from student where name like CONCAT("%",char(),"%")
union all select REPLACE(REPLACE(name, char(), ''), char(), '') as name from person where name like CONCAT("%",char(),"%")
union all select REPLACE(REPLACE(name, char(), ''), char(), '') as name from student where name like CONCAT("%",char(),"%");
4.3、可以将回车符和换行符转换为特殊的字符。
-- 将char(10)换行键,char(13)回车键换成@#r;和@#n;
select REPLACE(REPLACE(name, char(), '@#r;'), char(), '@#n;') as name from user where name like CONCAT("%",char(),"%")
如果需要有需要,可以将特殊的字符再转换为回车符和换行符。
-- 将@#r;和@#换成nchar(10)换行键,char(13)回车键;
select REPLACE(REPLACE(name, '@#r;', char()), '@#n;', char()) as name from user where name like CONCAT("%",char(),"%")
5、 查询出最大时间,可以根据这个来进行批次插入数据和批次导出数据。
5.1、Postgresql和Greenplum的用法:
COALESCE()的用法,如果第一个参数不为null,咋返回第一个参数,否则返回第二个参数。
select '数据表名称' as table_name, as part, COALESCE(max(update_time), now()) as next_time from schema.数据表名称
5.2、Mysql的用法:
ifnull()的用法,如果第一个参数不为null,咋返回第一个参数,否则返回第二个参数。
select 'user' as table_name,ifnull(max(update_time),now()) as update_time from user;
6、MYSQL或者Postgresql和Greenplum的Case...When的用法基本相同。
6.1、Case expr when v1 then r1 when v2 then r2 else rn end。该函数表示,如果expr值等于某个vn,则返回对应位置then后面的结果,如果所有值都不相等,则返回else后面的rn。
select case when then 'one' when then 'two' else 'more' end;
6.2、case when v1 then r1 when v2 then r2 else rn end。该函数表示,某个vn为true的时候,则返回对应位置then后面的结果,如果所有值都不相等,则返回else后面的rn。
select case when < then 'true' when > then 'false' else 'more' end;
7、查询最大批次号,如果不存在根据规则生成一个批次号。
Postgresql和Greenplum使用to_number()函数来转换成整数、to_char()将数字转为字符串。mysql无此函数。
完整的例子如下所示:
select to_char(to_number(COALESCE(max("Cd_batch"), to_char(now(), 'yyyyMMdd')||''), '') + , '') from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'
步骤一:获取最大的批次号:
select max("Cd_batch") from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'
步骤二:判断如果最大批次号如果为null,根据规则生成一个批次号。
select COALESCE(max("Cd_batch"), to_char(now(), 'yyyyMMdd')||'') from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'
步骤三:将生成的字符串转换为数值类型numeric的,长度为第二个参数的长度,并且批次号加1。这样下发的数据的批次号就是叠加后的批次号。
select to_number(COALESCE(max("Cd_batch"), to_char(now(), 'yyyyMMdd')||''), '') + from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'
步骤四:将生成的数值numeric类型转换为字符串类型的。
select to_char(to_number(COALESCE(max("Cd_batch"), to_char(now(), 'yyyyMMdd')||''), '') + , '') from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'
待续......
常用Mysql或者PostGresql或者Greenplum的语句总结。的更多相关文章
- mysql迁移mpp数据库Greenplum
1. 场景描述 因兄弟项目中mysql有点扛不住了,要做sql优化,但是业务有点小复杂,优化起来有点麻烦(sql嵌套有点多),便想着用Mpp数据库Greenplum测试下,看性能和复杂度怎么样,趟趟水 ...
- 常用SQL操作(MySQL或PostgreSQL)与相关数据库概念
本文对常用数据库操作及相关基本概念进行总结:MySQL和PostgreSQL对SQL的支持有所不同,大部分SQL操作还是一样的. 选择要用的数据库(MySQL):use database_name; ...
- 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码
一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...
- 常用MySQL语句整合
常用MySQL语句整合 1. MySQL服务的配置和使用 修改MySQL管理员的口令:mysqladmin –u root password 密码字符串 如:mysqldmin –u root pas ...
- Mysql 和 Postgresql(PGSQL) 对比
Mysql 和 Postgresql(PGSQL) 对比 转载自:http://www.oschina.net/question/96003_13994 PostgreSQL与MySQL比较 MySQ ...
- PostgreSQL和Greenplum、Npgsql
PostgreSQL和Greenplum.Npgsql 想着要不要写,两个原因“懒”和“空”.其实懒和空也是有联系的,不是因为懒的写,而是因为对PostgreSQL和Npgsql的知识了解匮乏,也就懒 ...
- 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析
对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...
- SQLite vs MySQL vs PostgreSQL:关系型数据库比较
自1970年埃德加·科德提出关系模型之后,关系型数据库便开始出现,经过了40多年的演化,如今的关系型数据库种类繁多,功能强大,使用广泛.面对如此之多的关系型数据库,我们应该如何权衡找出适合自己应用场景 ...
- 去 IOE,MySQL 完胜 PostgreSQL
本文转载自: http://www.innomysql.net/article/15612.html (只作转载, 不代表本站和博主同意文中观点或证实文中信息) 前言 上周参加了2015年的中国数据库 ...
随机推荐
- python 装饰器练习题
1.写出完整的装饰器(不用开了带参装饰器,就是普通装饰器)语法 2.有一个计算两个数和的方法,为其添加一个确保两个参数都是int或float类型的装饰器,保证运算不会抛异常 3.有一个一次性录入人名并 ...
- P2837 晚餐队列安排
此题可能用动规不太好做,主要是状态转移方程很难想个人认为,思维发散的大佬们忽视. 我看了这位大佬的dp题解后才想到了方程,在此受我一膜%%% 嗯,说下思路: 先用a[i]数组存一下输入的编号: 然后用 ...
- Django JSON,AJAX
JSON 概念 JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具 ...
- Django contenttypes组件
contenttypes组件 介绍 Django包含一个contenttypes应用程序(app),可以跟踪Django项目中安装的所有模型(Model),提供用于处理模型的高级通用接口. Conte ...
- Hdoj 1425.sort 题解
Problem Description 给你n个整数,请按从大到小的顺序输出其中前m大的数. Input 每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含 ...
- Django模板
Django模板系统 官方文档 常用语法 只需要记住两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 { 变量名 }} 变量名由字母数字和下划线组成. 点 ...
- Python学习day9 函数Ⅰ(基础)
函数Ⅰ(基础) 三目运算 基本结构 v = 前面 if 条件 else 后面 #条件为真v=前面,条件为假v=后面.#等同于if 条件: v = '前面'else: v = '后面' ...
- 值得推荐的C/C++框架和库 (真的很强大) c
http://m.blog.csdn.net/mfcing/article/details/49001887 值得推荐的C/C++框架和库 (真的很强大) 发表于2015/10/9 21:13:14 ...
- Memcached介绍
Memcached介绍 Memcached是一种免费的.开源的.高性能的.分布式对象缓存系统,通过缓解数据库压力,来提高动态web页面的速度. Memcached是一种内存级别的键值对存储,用来存放数 ...
- python time模块和datetime模块
一.time模块 time模块中时间表现的格式主要有三种: a.timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 b.struct_time时间元组,共 ...