Я полагаю, что вы можете использовать что-то вроде: -
WITH namecte AS (SELECT 'Teju') /*<<<<<<<<<< change name to required name to appear last */
SELECT
(SELECT max(rowid) FROM transaction_table) + 1 AS sortid,
*,
rowid AS original_rowid
FROM transaction_table
WHERE name = (SELECT * FROM namecte)
UNION SELECT
rowid AS sortid,
*,
rowid AS original_rowid
FROM transaction_table
WHERE name <> (SELECT * FROM namecte)
ORDER BY sortid
;
Это предполагает, что таблица не является таблицей БЕЗ ROWID и что порядок является порядком вставки и отсюда использование rowid (который создает сорт).
- Конечно, вместо rowid можно использовать другой столбец, если такой столбец лучше обозначает то, что считается первым ..... последний (теоретически понятия не существует) порядка, если не используется ORDER BY) , хотя для генерации сортировки может потребоваться настройка для соответствия содержимому столбца.
- original_rowid существует исключительно для демонстрации и, вероятно, будет опущен (хотя это может быть полезно поскольку это фактический идентификатор строки и может использоваться для определения местоположения строки, если требуется последующее сканирование)
Демо / тест
DROP TABLE IF EXISTS transaction_table;
CREATE TABLE IF NOT EXISTS transaction_table (name TEXT);
INSERT INTO transaction_table VALUES('John'),('Mark'),('Matt'),('Zin'),('Teju'),('Yolo');
WITH namecte AS (SELECT 'John')
SELECT
(SELECT max(rowid) FROM transaction_table) + 1 AS sortid,
*,
rowid AS original_rowid
FROM transaction_table
WHERE name = (SELECT * FROM namecte)
UNION SELECT
rowid AS sortid,
*,
rowid AS original_rowid
FROM transaction_table
WHERE name <> (SELECT * FROM namecte)
ORDER BY sortid
;
/* Cleanup Testing Environment */
DROP TABLE IF EXISTS transaction_table;
Изменение на Zin: -
![enter image description here](https://i.stack.imgur.com/Bj4C3.png)