Sobes.tech
Middle

Kaip SQL'e parodyti kiekvieno skelbimo dabartinį adresą ir kainą?

sobes.tech AI

Atsakymas iš AI

Norėdami SQL parodyti kiekvieno skelbimo aktualų adresą ir kainą, turite apibrėžti, ką reiškia "aktualu" — paprastai tai yra paskutinis įrašas pagal datą arba versiją kiekvienam skelbimui.

Tarkime, yra lentelė ads su stulpeliais: ad_id, address, price, updated_at.

Pavyzdys užklausos, kuri kiekvienam skelbimui pasirenka įrašą su maksimaliu atnaujinimo data:

SELECT ad_id, address, price
FROM ads a
WHERE updated_at = (
    SELECT MAX(updated_at)
    FROM ads
    WHERE ad_id = a.ad_id
);

Jei duomenų bazė palaiko lango funkcijas, galima naudoti:

SELECT ad_id, address, price
FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY ad_id ORDER BY updated_at DESC) as rn
    FROM ads
) sub
WHERE rn = 1;

Tai leis gauti kiekvieno skelbimo naujausią adresą ir kainą.