我有以下表格:
CREATE TABLE Kundendaten (
beschreiben_knr INTEGER REFERENCES Kunde(knr) DEFERRABLE INITIALLY DEFERRED,
erstelldatum DATE,
anschrift VARCHAR(40),
sonderrabat INTEGER,
PRIMARY KEY (erstelldatum, beschreiben_knr)
);
如果我提出此查询:
select * from Kundendaten ORDER BY erstelldatum DESC;
我得到:
beschreiben_knr | erstelldatum | anschrift | sonderrabat
-----------------+--------------+---------------+-------------
1 | 2015-11-01 | Winkelgasse 5 | 0
2 | 2015-11-01 | Badeteich 7 | 10
3 | 2015-11-01 | Senfgasse 7 | 15
1 | 2015-10-30 | Sonnenweg 3 | 5
但如果有多个条目,我只需要获得最高日期条目的条目。在这种情况下,最后一行不应出现。
我如何在postgresql中实现这一目标?
答案 0 :(得分:1)
你想要像WHERE erstelldatum = MAX(DATE)
这样的东西,但这不起作用。您可以使用子查询来获取最新日期。
SELECT *
FROM Kundendaten
WHERE erstelldatum = (
SELECT MAX(erstelldatum) FROM Kundendaten
);
Postgres将优化该子查询,因此它只运行一次,但您需要确保erstelldatum
被编入索引。