PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann ich (oder kann ich) DISTINCT für mehrere Spalten auswählen?

SELECT DISTINCT a,b,c FROM t

ist ungefähr Äquivalent zu:

SELECT a,b,c FROM t GROUP BY a,b,c

Es ist eine gute Idee, sich an die GROUP BY-Syntax zu gewöhnen, da sie leistungsfähiger ist.

Für Ihre Anfrage würde ich es so machen:

UPDATE sales
SET status='ACTIVE'
WHERE id IN
(
    SELECT id
    FROM sales S
    INNER JOIN
    (
        SELECT saleprice, saledate
        FROM sales
        GROUP BY saleprice, saledate
        HAVING COUNT(*) = 1 
    ) T
    ON S.saleprice=T.saleprice AND s.saledate=T.saledate
 )