1 通过分组实现distinct
select ItemType,GoodsName from tableA order by ItemType,GoodsName group by ItemType,GoodsName
where tableA.ItemType == '传入的值';
采用上述SQL就可得到distict后的值,如果要取出数据后再进行distinct可以采用2中介绍的Set类;
2 数组集合
注意:
1 List、Map、Struct、Array提供了可序列化的pack和unpack功能,可以减少RPC次数,提高速度;
2 如果设置了key的类型,存入不同类型如:string-->int,会自动存默认值(0)进去;
[Set 类]
Set类中所有值得类型都相同;Set会自动排序并且所有值都是唯一的,插入重复的值时,Set会自动忽略。
set.Add("");
while(set.MoveNext())
{
set.current();
}
[List 类]
List类同Set类的区别:
可添加相同值,可选择插入前面或者后面;
在List的顺序是添加时的顺序,不会自动排序;
list.Add("");
while(list.MoveNext())
{
list.current();
}
[Map 类]
Map类保存键值对,键不能重复,当插入相同键时,用新值代替旧值,键自动排序。
map.insert(1,"");
while(map.MoveNext())
{
map.currentKey(),map.currentValue();
}
[Struct 类]
Struct 类相当于没有方法的类,可拥有不同数据类型字段,但只能有一行记录。
struct.value("ID",1);
struct.value("name","");
struct.add("","");
for(i = 1; i <= struct.fields();i++)
{
struct.fieldname(i),struct.valueIndex(i);
}
[Array 类]
Array 类使用类实现数组,可容纳任意数据类型,包括对象和表变量;索引值从1开始,相同的索引值新值替换旧值。
array.value(1,"");
for(i = 1; i <= array.lastIndex();i ++)
{
array.value(i);
}
[Stack 类]
Stack 类是后进先出(LIFO)的数据结构类型,只能放置容器类型Container,添加和删除都从顶部开始。
stack.push(Container1);
conpeek(stack.pop(),1);
[StackBase 类]
StackBase 类同Stack 类,除了它可以放置任意类型。
stackbase.push("");
stackbase.pop();