Dapatkan baris data terkini
P粉277464743
P粉277464743 2024-04-02 15:27:20
0
1
435

Borang:

Tugas: id(bigint) nama(varchar). Simpan butiran tugas

Jobs: id(varchar(UUID)) task_id(bigint(class ID)), staus >(varchar(50)), created_time(timestamp). Simpan butiran pelaksanaan tugas

Nilai yang mungkin untuk status adalah GAGAL/SELESAI/GANGGU

Apa yang saya ingin capai ialah Dapatkan semua nilai terkini untuk setiap tugasan daripada jadual kerja

Jika tiada kerja dalam tugas, status pemulangan adalah batal

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

membalas semua(1)
P粉755863750

Untuk versi SQL yang menyokong ROW_NUMBER() anda boleh melakukan ini:

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

Jika tidak, gunakan sahaja cte atau subquery.

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan