2

我有一个具有以下属性的表:

SortCode   Index  Created

SortCode是主键,Index是辅助键。给定一个Index值,我如何获得关联的SortCode值?

我试过ets:lookup/3了,但它只需要一个主键。

4

2 回答 2

3

中没有二级索引之类的东西ets。你可以做:

  1. ets:match使用orets:select进行全扫描
  2. 让您拥有反向索引ets表或
  3. mnesia与添加的(二级)索引一起使用。
于 2015-09-26T11:41:00.690 回答
-1

补充一下 Hynek -Pichi- Vychodil 所说的话。

ets 中没有解决方案可以使用除了键之外的其他属性来获取记录。可以使用mnesia:dirty_index_read().

如果您只想使用 ets,那么您可以按照上述建议或以下代码进行操作。假设您的记录模式类似于:{"one",1,"27092015"} 键是“一”,但您必须使用 1 获取。

FilterSuspCodeFun = fun ({_,I,_}) when I == 1 -> true ; (_) -> false end,
ListData = ets:tab2list(susp_code),
{SortCode,_,created}= lists:filter(FilterSuspCodeFun,ListData),
于 2015-09-26T23:31:20.637 回答