我如何 select 来自 tarantool 的一系列键,例如 SELECT BETWEEN in SQL?
How do I select a range of keys from tarantool, like with SELECT BETWEEN in SQL?
由于这是 https://t.me/tarantool and https://t.me/tarantoolru 中最常见的问题之一,我 post 在这里回答。
您可以使用 Lua 以及 SQL。
1) 在Lua中使用存储过程,例如:
function select_between(space_name, index_name, field_name, from, to)
local obj = index_name == nil and box.space[space_name] or box.space[space_name].index[index_name]
local result = {}
for _, tuple in obj:pairs(from, {iterator = 'GE'}) do
if (tuple[field_name] <= to) then
table.insert(result, tuple)
else
break
end
end
return result
end
select_between('test', nil, 'id', 1, 3)
2)从Tarantool 2.0开始,可以使用SQL(前提是你有space格式):
box.execute('select * from "test" where "id" between 1 and 3;')
space:pairs(from, 'GE'):
take_while(function(x) return x.field <= to end)
-- :totable() or use the result in the for-loop
对于多部分密钥,请参阅
由于这是 https://t.me/tarantool and https://t.me/tarantoolru 中最常见的问题之一,我 post 在这里回答。
您可以使用 Lua 以及 SQL。
1) 在Lua中使用存储过程,例如:
function select_between(space_name, index_name, field_name, from, to)
local obj = index_name == nil and box.space[space_name] or box.space[space_name].index[index_name]
local result = {}
for _, tuple in obj:pairs(from, {iterator = 'GE'}) do
if (tuple[field_name] <= to) then
table.insert(result, tuple)
else
break
end
end
return result
end
select_between('test', nil, 'id', 1, 3)
2)从Tarantool 2.0开始,可以使用SQL(前提是你有space格式):
box.execute('select * from "test" where "id" between 1 and 3;')
space:pairs(from, 'GE'):
take_while(function(x) return x.field <= to end)
-- :totable() or use the result in the for-loop
对于多部分密钥,请参阅