有个表类似如下:
ID GroupID
1 1
2 1
3 2
4 2
5 2
6 2
7 3
8 4
9 4
10 4
现在要获取ID为5的记录在组别ID(GroupID)为2数据组中的位置,如果位置从0开始,那么记录5在组别为2的数据记录中的位置为2。不知道如果只用Sql查询语言能不能直接查出来。
我的解决办法有两种,一种是在表中直接用字段实现。可以再给该表加一字段,用以记录该项数据在其组别中的位置。Test(测试)表如下:
ID GroupID GroupPosition
1 1 0
2 1 1
3 2 0
4 2 1
5 2 2
6 2 3
7 3 0
8 4 0
9 4 1
10 4 2
这样一来,再使用的时候,直接用Sql查询GroupPosition一个字段就OK了。
比如要查找5所在其组别的位置,可用 select GroupPosition from Test where ID=5 and GroupID=2
如果没有GroupPosition字段的话,那么只能在程序中实现查找其位置了。
我用的方法是,先查出所有的2组别数据放在一个DataSet中,查询时按ID排序。即:
select * from Test where GroupID=2 group by ID
这样就可以把组别为2的数据全部查出,然后在程序里对DataSet.Tables[0].Rows.Count做一个for循环,判断DataSet.Tables[0].Row[i]["ID"]==5里,取出循环种子的值。如下:
for(int i=0;i<DataSet.Tables[0].Rows.Count;i++)
{
if(int.Parse(DataSet.Tables[0].Rows[i]["ID"].ToString())==5)
{
//取出i的值,即为5所在组2中的位置
}
}
后者方法可能是笨了点,但如果表已经确定了,而且不能修改,那么也只能用这样的笨方法。
不知道,还有没有更好的方法。如果能用Sql直接查出更好,而且是在不增加位置记录字段的情况下。
ID GroupID
1 1
2 1
3 2
4 2
5 2
6 2
7 3
8 4
9 4
10 4
现在要获取ID为5的记录在组别ID(GroupID)为2数据组中的位置,如果位置从0开始,那么记录5在组别为2的数据记录中的位置为2。不知道如果只用Sql查询语言能不能直接查出来。
我的解决办法有两种,一种是在表中直接用字段实现。可以再给该表加一字段,用以记录该项数据在其组别中的位置。Test(测试)表如下:
ID GroupID GroupPosition
1 1 0
2 1 1
3 2 0
4 2 1
5 2 2
6 2 3
7 3 0
8 4 0
9 4 1
10 4 2
这样一来,再使用的时候,直接用Sql查询GroupPosition一个字段就OK了。
比如要查找5所在其组别的位置,可用 select GroupPosition from Test where ID=5 and GroupID=2
如果没有GroupPosition字段的话,那么只能在程序中实现查找其位置了。
我用的方法是,先查出所有的2组别数据放在一个DataSet中,查询时按ID排序。即:
select * from Test where GroupID=2 group by ID
这样就可以把组别为2的数据全部查出,然后在程序里对DataSet.Tables[0].Rows.Count做一个for循环,判断DataSet.Tables[0].Row[i]["ID"]==5里,取出循环种子的值。如下:
for(int i=0;i<DataSet.Tables[0].Rows.Count;i++)
{
if(int.Parse(DataSet.Tables[0].Rows[i]["ID"].ToString())==5)
{
//取出i的值,即为5所在组2中的位置
}
}
后者方法可能是笨了点,但如果表已经确定了,而且不能修改,那么也只能用这样的笨方法。
不知道,还有没有更好的方法。如果能用Sql直接查出更好,而且是在不增加位置记录字段的情况下。