按照某字段分组,并且每组中查出最新的那条记录
row_number(): 在其分区中的当前行号,从1计
over(partition by filed order by filed2),指定分组字段并对分区中的内容进行排序
#分组查询,并且每组只查最新的记录
select *
from(
select * ,row_number() over (partition by b order by created_at desc) order_in_b from test
where a = 'aa'
)as temp
where order_in_b= 1
结果:
将记录按某字段分组,再同时统计每组中的记录数量
统计type为false的记录,并以line_id分组,统计每个line_id有几个数据
SELECT line_id ,count(*)FROM "abnormity" WHERE (type = false) AND "abnormity"."deleted_at" IS NULL group by line_id
两张表,根据两张表的各自某个字段,把一张表的某个字段的值赋值给另一张表的某个字段
场景:
- 两张表:test1,test2
test2
test1
- 如果test2中记录的id等于test1中记录的id,那么将test1中的sn赋值到test2该记录的sn字段上
SQL
update
test2
set
sn= temp.sn
from
(select t1.sn,t1.id
from test1 t1
inner join test2 t2
on t1.id = t2.id) as temp
where
temp.id=test2.id
结果
test2