Эти продукты делают одну вещь, управляют очередями, но они делают это хорошо.
лизую небольшую очередь, чтобы определить, какой процесс запускается первым. Я использую таблицу в базе данных, чтобы сделать это. Вот структура таблицы (я ее макетирую в SQLite):
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
"identifier" VARCHAR NOT NULL ,
"priority_number" INTEGER DEFAULT 15,
"timestamp" DATETIME DEFAULT CURRENT_TIMESTAMP,
"description" VARCHAR
Я пытаюсь написать SQL, чтобы указать, какой процесс может быть запущен следующим. Вот некоторые примеры данных:
id identifier priority_number timestamp description
1 test1 15 2009-01-20 17:14:49 NULL
2 test2 15 2009-01-20 17:14:56 NULL
3 test3 10 2009-01-20 17:15:03 NULL
4 test4 15 2009-01-20 17:15:08 NULL
5 test5 15 2009-01-20 17:32:23 NULL
6 test6 14 2009-01-20 17:32:30 NULL
7 test7 7 2009-01-20 17:32:38 NULL
8 test8 20 2009-01-20 17:32:57 NULL
9 test9 7 2009-01-21 13:47:30 NULL
10 test10 15 2009-01-21 13:50:52 NULL
Если я использую этот SQL, я могу получить данные в правильном порядке:
select * from queue_manager order by priority_number, timestamp;
Это даст мне элемент с самым низким номером приоритета (самый важный) в верхней части, а в этих приоритетных номерах - самый ранний в очереди (по метке времени) вверху.
Я мог бы выполнить этот запрос и взять только первую строку, но я бы предпочел сделать это с помощью SQL-запроса, который дал бы мне одну строку процесса, которая находится в верхней части очереди (в приведенных выше примерах, строка с id = 7).
Я пытался делать самостоятельные объединения и подзапросы, но у меня, должно быть, был ментальный блок - я просто не могу понять это правильно
Заранее спасибо!
РЕДАКТИРОВАТЬ
Я забыл упомянуть, что я ищу независимый от базы данных запрос. Я делаю это в SQlite, но есть хорошая возможность реализовать это в DB2 или Oracle. Я думал использовать оператор типа «предел 1» в моем запросе, но это отличается в разных движках базы данных.