Как получить запрос SQL на удаление самой последней записи? - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь удалить самую последнюю запись, где job_id равен идентификатору, из заданий, статус которых приостановлен, и не знаю о таких функциях. Есть ли способ сделать это?

DELETE FROM
  records
WHERE
  **due_date = most recent**
  AND job_id IN (
    SELECT
      id
    FROM
      jobs
    WHERE
      status = 'paused'
  )

1 Ответ

2 голосов
/ 04 августа 2020

Попробуйте запрос ниже.

DELETE FROM records WHERE due_date IN 
( SELECT due_date FROM records ORDER BY due_date DESC LIMIT 1) 
and job_id IN (SELECT id FROM jobs WHERE status = 'paused') ;

Я предполагаю схему ниже таблицы, пожалуйста, исправьте, если иначе

CREATE TABLE records(Id integer PRIMARY KEY, due_date date,name varchar2,job_id integer);
CREATE TABLE jobs(Id integer PRIMARY KEY, status varchar2);


INSERT INTO records VALUES(1,'17/12/2015','1','3');
INSERT INTO records VALUES(2,'17/12/2020','2','3');

INSERT INTO jobs VALUES(3,'paused');
INSERT INTO jobs VALUES(4,'paused');
COMMIT;
...