鉴于下表:
Table "public.vs_protocolo"
Column | Type | Modifiers
-----------------+-----------------------------+-----------------------------------------------------------
id | integer | not null default nextval('vs_protocolo_id_seq'::regclass)
data_criacao | timestamp without time zone | not null default now()
ano_processo | integer | not null
numero_processo | integer | not null
Table "public.vs_protocolo_historico"
Column | Type | Modifiers
--------------+-----------------------------+---------------------------------------------------------------------
id | integer | not null default nextval('vs_protocolo_historico_id_seq'::regclass)
id_protocolo | integer | not null
descricao | character varying(255) | not null
status | integer | not null default 0
data_criacao | timestamp without time zone | not null default now()
Run Code Online (Sandbox Code Playgroud)
我必须从 中选择vs_protocolo与最后一行连接的所有行vs_protocolo_historico。
我担心性能,所以它必须避免子查询,或者至少避免对vs_protocolo.
注:vs_protocolo_historico(id_protocolo) REFERENCES vs_protocolo(id)。
我认为这个更简单更快
select
id,
p.ano_processo,
p.numero_processo,
h.descricao,
h.status,
h.data_modificacao
from
vs_protocolo p
inner join
(
select distinct on (id_protocolo)
id_protocolo as id,
descricao,
status,
data_criacao as data_modificacao
from vs_protocolo_historico
order by id_protocolo, data_criacao desc
) h using (id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1338 次 |
| 最近记录: |