sql >> Database teknologi >  >> RDS >> PostgreSQL

Hent feltværdi fra en post, der får en aggregeret betingelse til at være sand

with agg as (
    select a, min(d) as d
    from x
    group by a
    having 1 = any(array_agg(b))
)
select distinct on (a, c)
    a, c, d
from
    x
    inner join
    agg using (a, d)
order by a, c

Hvis min(d) er ikke unik i a gruppe, så er det muligt at eksistere mere end én tilsvarende c . Ovenstående vil returnere den mindste c. Hvis du vil have den største, gør i stedet

order by a, c desc


  1. Skal jeg slå Query Cache fra i MySQL?

  2. Sæt første bogstav i hvert ord med stort i eksisterende tabel

  3. Hvordan overvåger man SQL Server-tabelændringer ved hjælp af c#?

  4. Træk poster fra ordretabellen for den aktuelle uge