Sobes.tech
Middle

SQLде ар бир жарнама үчүн актуалдуу дарек жана бааны кантип көрсөтүү керек?

sobes.tech AI

AIден жооп

SQLда ар бир жарнама үчүн актуалдуу дарек жана бааны көрсөтүү үчүн, "актуалдуу" деген эмне экенин аныктоо керек — адатта, ар бир жарнама үчүн датасы же версиясы боюнча эң акыркы жазуу.

Айтайын дегенде, ads деген таблица бар деп эсептейли, анын колонкалары: ad_id, address, price, updated_at.

Ар бир жарнама үчүн эң акыркы жаңылоо датасы менен жазууну тандоочу мисал:

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

Эгер базада терезе функциялары колдоого алынса, колдонсо болот:

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;

Бул ар бир жарнама үчүн эң акыркы дарек жана бааны алууга мүмкүндүк берет.