используйте номер идентификатора, которого нет в моей базе данных
Затем добавьте его.
SQL - это язык множеств: https://en.wikipedia.org/wiki/Set_(mathematics)
По определению, элементы в наборе не расположены ни слева, ни справа друг от друга, ни на севере, ни на юге, ни до, ни после.Они просто существуют.Неупорядоченным образом.
Итак, если вы хотите, чтобы ваши строки были упорядочены - вам нужно добавить в него некоторое значение упорядочения (поле, столбец), а затем заполнить это значение.И затем, читая из таблицы, если вы хотите, вы можете попросить упорядочить результаты по этому значению.
На данный момент Firebird имеет все права на чтение строк в любом порядке, в котором может пожелать, даже дляизменить порядок строк на диске (это не так, но это реализация ndetail, и это может измениться в будущем).
Вы должны добавить столбец идентификатора и затем заполнить его.Это сделало бы «последнюю запись» или «предыдущую запись» или «строку выше» значимыми идиомами: «объект с идентификатором на единицу меньше, чем идентификатор текущего объекта».На данный момент в терминах SQL нет никакого смысла в «последней записи», и надежная формулировка запроса невозможна.
После этого изменение столбца флага в таблице становится тривиальным оператором MERGE
.
MERGE INTO MyTable T1
USING MyTable T2
ON (T2.ID = T1.ID - 1) AND (T2.pos_buildcount <> 255)
WHEN MATCHED THEN
UPDATE SET T1.flag = 1
http://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-dml-merge.html
Или, не добавляя столбец в таблицу, но создавая «виртуальный» столбец в запросе, присоединяя таблицу к себе.
https://en.wikipedia.org/wiki/Join_(SQL)#Left_outer_join
SELECT T1.*, T2.Vehicle as Flag
FROM MyTable T1
LEFT JOIN MyTable T2
ON (T2.ID = T1.ID - 1) AND (T2.pos_buildcount <> 255)
Конечно, это будет работать только в том случае, если столбец ID будет заполнен целыми числами без пробелов.Иначе были бы другие определения, что означает «предыдущая запись», кроме T2.ID = T1.ID - 1
, но идея верна.Определите, что означает «предыдущий» с точки зрения реальных данных о реальных столбцах, и затем вы сможете сравнить таблицу с самой собой.