如何从tarantool中选择键范围,例如在SQL中使用SELECT BETWEEN?

时间:2019-06-14 16:28:43

标签: tarantool

由于这是https://t.me/tarantoolhttps://t.me/tarantoolru中最常见的问题之一,因此我将答案发布在这里。

2 个答案:

答案 0 :(得分:0)

您可以使用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(前提是您具有空间格式):

box.execute('select * from "test" where "id" between 1 and 3;')

答案 1 :(得分:0)

space:pairs(from, {iterator = 'GE'}):
    take_while(function(x) return x.field <= to end)
    -- :totable() or use the result in for-loop

有关多部分键,请参见https://stackoverflow.com/a/57766656/1135874