Когда я запускаю код:
row = db:first_row("SELECT MIN(rowid) from table")
local minID = row.rowid
row = db:first_row("SELECT MAX(rowid) from table")
local maxID = row.rowid
Я получаю сообщение об ошибке:
Runtime error: ...\db_test\main.lua:33: attempt to call method 'first_row' (a nil value)
stack traceback:
[C]: in function 'first_row'
...\main.lua:33: in main chunk
Тот же самый SQL-запрос работает в Python в той же базе данных.
ROWID и INTEGER PRIMARY KEY
Каждая строка каждой таблицы SQLite имеет 64-битный целочисленный ключ со знаком, который однозначно идентифицирует строку в этой таблице. Это целое число обычно называют rowid. Доступ к значению rowid можно получить, используя одно из специальных имен, не зависящих от регистра, rowid, oid или rowid вместо имени столбца.
Кому интересно, рабочий код в моем случае:
local minId
local maxId
for row in db:nrows("SELECT MIN(rowid) AS `rowmin` FROM " .. table) do
minId = row.rowmin
end
for row in db:nrows("SELECT MAX(rowid) AS `rowmax` FROM " .. table) do
maxId = row.rowmax
end