コードを実行すると:
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 で機能します。
sqliteのドキュメントから
"ROWID と INTEGER PRIMARY KEY
すべての SQLite テーブルのすべての行には、テーブル内の行を一意に識別する 64 ビットの符号付き整数キーがあります。この整数は、通常「ROWID」と呼ばれます。列名の代わりに、大文字と小文字を区別しない特別な名前「rowid」、「oid」、または「rowid 」のいずれかを使用して、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