PgSQL范围查询(和mySQL有些不同)⼀.查询表中最后⼏天数据或者中间⼏条数据
因为需要查询表单中从第⼏条数据到第⼏条数据
通过百度我查到了
select*from demo1 order by id desc limit0,2;
结果发现报错,可能mySQL和PgSQL有些不⼀样,所以我根据提⽰改了改。
select zb_name from zb_fjzb1 order by id desc limit2offset0;
1.表数据倒数第⼏条数据查询结果:
c语言数组越界会发生什么或者
scanf函数的用法和注意事项2.查询从第⼏条到第⼏条数据:excel常用快捷键汇总
select*from zb_fjzb limit8offset1;
查询结果:
⼆.⽇期查询本⽉最后⼀天/上个⽉最后⼀天或者第⼀天
3:查询上个⽉最后⼀天数据
查询上个⽉最后⼀天:
SELECT (date_trunc('month', now())::date-1) as last_month_date
查询上⽉最后⼀天数据:
SELECT*FROM zb_b WHERE TIME=(SELECT(date_trunc('month',now())::date-1)as last_month_date)
4:查询本⽉最后⼀天数据
查询到时间:select (date_trunc('month', now()) + interval '1 month - 1 day')::date;
SELECT*FROM zb_b WHERE TIME=(select(date_trunc('month',now())+interval'1 month - 1 day')::date)
5:查询本⽉第⼀天
select (date_trunc(‘month’, now()) + interval ‘0 month 0 day’)::date;
能查出来的有两种⽅法,最后我个⼈感觉还是:
select (date_trunc(‘month’, now()) + interval ‘0 month 0 day’)::date;
好⽤,想查哪个⽉份第⼏天或者第⼀天最后⼀天,只需要修改上⾯的两个参数就可以。推荐黄⾊标注的语句。
三.查询表中最⼤⽇期的⼀条数据
1.这是两个表数据:
需求:需要查出这两个表⽇期最⼤的⼀条数据。
2.这是查询出最⼤⽇期
select max(to_date(time,'yyyy-mm-dd'))from zb_zhzx3;
2.根据最⼤⽇期查出表的⼀条最⼤⽇期数据。
查出第⼀个表:
select*from(select t.*,row_number()over(order by to_date(time,'yyyy-mm-dd')desc)as flag
from zb_zhzx3 t) x where flag=1;
查出第⼆个表的数据:
select*from(select t.*,row_number()over(order by to_date(time,'yyyy-mm-dd')desc)as flag
from zb_zhzxy t) x where flag=1;
四.pgsql去重查询:
1.需要查询的数据有很多重复值:
2,利⽤pgsql⾃带的distinct去重函数进⾏查询:
SELECT distinct zb_ban FROM zb_tqzb;
查询结果:
五.字符串转时间类型和查询今⽇数据(N⽇数据)
1到12怎么随机选择5个数字1.因为需要查询今天的数据,但是我的数据库数据类型是date类型的,导致不是时间数据需要进⾏数据转码。to_date(time,‘yyyy-mm-dd’),time是我的字段名
SELECT*FROM zb_tqzbb
WHERE
to_date(time,'yyyy-mm-dd')=CURRENT_DATE;
原本不需要转码的写法:
SELECT*FROM表名
WHERE
时间字段=CURRENT_DATE
2。查询昨⽇数据就需要:
SELECT*FROM zb_tqzbb
WHERE
to_date(time,'yyyy-mm-dd')=CURRENT_DATE-1;
当然,查哪天的,就在后⾯+或者-需要查询的天数就可以了。
mysql面试题sql六. 两条条件合并条件查询。
select *from zb_allry where zb_name='条件1';
select *from zb_allry where zb_name='条件2';
有两种合并的⽅法:
1.通过定义两个句⼦合并:
select t1.*,t2.*from(select *from zb_allry where zb_name='条件1')t1,(SELECT*from zb_allry WHERE zb_name='条件2')t2;
结果:
2.通过UNION⽅法合并两条查询语句:
select *from zb_allry where zb_name='条件1'UNION SELECT*from zb_allry WHERE zb_name='条件2';
结果:
两种⽅法,查出的也有些不⼀样。
七.联合查询加双条件查询:
因为姓名数据和联系⽅式数据不在⼀个表⾥(⼈名⼀个表,有联系⽅式的⼀个表),我是通过⼈名查另⼀个表的联系⽅式的(最好还是通过id查,⼈名数据多了可能会出现重名)。
1.查询出今⽇数据(因为当时录⼊数据的时候,是字符串格式的时间,所以需要转时间格式):
SELECT*FROM zb_zhzxy WHERE to_date(time,'yyyy-mm-dd')=CURRENT_DATE;
查询结果:
2.利⽤联合查询和union⽅法进⾏查询:
SELECT*FROM表1,表2inputstream的构造方法
WHERE
表1.表1字段=表2.表2字段and to_date(time,'yyyy-mm-dd')=CURRENT_DATE UNION
SELECT*FROM zb_zhzxy,zb_allry
WHERE
zb_allry.zb_name = zb_zhzxy.zb_fu and to_date(time,'yyyy-mm-dd')=CURRENT_DATE;
查询结果:
联合多表查询需要确定两个字段名,union是对两个sql语句进⾏合并。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论