Ich führe die Abfrage folgendermaßen über meine MySQL-Datenbank (MariaDB 10.3) aus:
SELECT * FROM my_table ORDER BY priority DESC, expiration_date ASC, id ASC
Ein Beispiel dieser Tabelle mit der angegebenen Reihenfolge sieht so aus:
id | ... | Priorität | Ablaufdatum |
---|---|---|---|
3 | ... | 2 | 2022-07-01 12:00:00 |
7 | ... | 2 | 2022-07-03 12:00:00 |
6 | ... | 2 | 2022-07-04 12:00:00 |
9 | ... | 1 | 2022-07-02 12:00:00 |
4 | ... | 1 | 2022-07-05 12:00:00 |
11 | ... | 1 | 2022-07-05 12:00:00 |
Jetzt habe ich die ID eines bestimmten Datensatzes und versuche, die Datensätze, die vor/nach diesem Datensatz in den Abfrageergebnissen liegen, in der angegebenen Reihenfolge über SQL abzurufen. Nehmen wir an, ich habe einen Datensatz mit Datensatz-ID 6
,我想分别返回 ID 为 9
和 7
.
Sortieren nach einer einzelnen eindeutigen Spalte, was in einer einzelnen Abfrage leicht zu erreichen ist, aber ich bin mir nicht sicher, wie ich mit mehreren nicht eindeutigen Spalten umgehen soll. Kann mir jemand sagen, wie ich das erreichen kann?
根据 Paul Maxwell 关于
LEAD
和LAG
的提示,我能够编写如下工作查询:检索以前的记录与
LAG
相应。