如何一次从tarantool中选择多个键,例如在SQL中使用SELECT IN?

时间:2019-06-14 13:52:17

标签: tarantool

我想在一次调用中从Tarantool中选择几条记录,但看不到如何将多个键传递给space:getspace:select

2 个答案:

答案 0 :(得分:1)

您可以使用Lua以及SQL来实现。

1)在Lua中使用存储过程,如下所示:

function select_several(space_name, index_name, keys)
    local obj = index_name == nil and box.space[space_name] or box.space[space_name].index[index_name]
    local result = {}
    for _, key in pairs(keys) do
        table.insert(result, obj:get(key))
    end
    return result
end
...
select_several('test', nil, {1, 2})

2)从Tarantool 2.0开始,可以使用SQL(前提是您具有空间格式):

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

答案 1 :(得分:0)

另一个等效于使用LuaFun的SQL查询select * from "test" where "id" in (1, 3)的变体:

tarantool> box.space.test:pairs():take_while(function (tuple) return tuple.id == 1 or tuple.id == 3 end):totable()

或使用名为“ id”的索引:

tarantool> box.space.test.id:pairs():take_while(function (tuple) return tuple.id == 1 or tuple.id == 3 end):totable()