Holen Sie sich die neueste Datenzeile
P粉277464743
P粉277464743 2024-04-02 15:27:20
0
1
451

Formular:

Aufgabe: id(bigint) name(varchar). Aufgabendetails speichern

Jobs: id(varchar(UUID)) task_id(bigint(class ID)), staus >(varchar(50)), created_time(timestamp). Details zur Aufgabenausführung speichern

Mögliche Werte für den Status sind FAIL/COMPLETED/INTERRUPTED

Was ich erreichen möchte ist Holen Sie sich alle aktuellen Werte für jede Aufgabe aus der Jobtabelle

Wenn die Aufgabe keinen Job enthält, ist der Rückgabestatus null

SELECT
    p.id, j.status
FROM
    tas p
        inner JOIN
            job j ON j.task_id = p.id
        inner JOIN
    job j1 ON j.task_id = j1.task_id and j.create_time > j1.create_time;

P粉277464743
P粉277464743

Antworte allen(1)
P粉755863750

对于支持 ROW_NUMBER() 的 SQL 版本,您可以这样做:

WITH info as(
  SELECT
    p.id, 
    j.status,
    ROW_NUMBER() OVER(PARTITION BY p.id ORDER BY j.created_time DESC) AS rn
  FROM tas p
  LEFT JOIN job j ON j.task_id = p.id
)
SELECT id, status
FROM info
WHERE rn = 1

否则,只需使用 cte 或子查询。

SELECT p.id, t.status
FROM tas AS p
LEFT JOIN (
  SELECT task_id, MAX(created_time) as created_time
  FROM job
  GROUP BY task_id
) as lt
ON p.id = lt.task_id
LEFT JOIN task AS t ON lt.task_id = t.task_id AND lt.created_time = t.created_time
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage