繁体   English   中英

如何使用辅助键进行 ets 表查找

[英]How to do an ets table lookup using a secondary key

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

SortCode   Index  Created

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

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

ets没有二级索引这样的东西。 你可以做:

  1. 使用ets:matchets:select
  2. 让你拥有反向索引ets表或
  3. 使用带有添加(二级)索引的mnesia

补充一下 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),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM