数据库中读取数据的有关问题

数据库中读取数据的问题?
SQL Sever2008中有:探测器布点信息表。该表中含有:监测点ID、探测器ID、时间、监测点经度、监测点纬度和监测点海拔等字段。数据库中的数据刷新时间最短30秒钟。且刷新数据时不会覆盖原先的数据。即:假设刚开始该表中有30条数据,到了刷新时间后,该表中的数据记录从第31行开始。
  现在有个问题。我开始用select * from 探测器布点信息,然后一条一条的读取记录。这没问题,但是一旦数据更新后,再这样读取的话就有问题。比如:数据表中有30个探测点的信息,数据刷新一次后,表中记录就又多了30条。这样读取的话就总共读了60条记录,明显是有问题的。
  再者,探测器布点信息表中,只记录监测点发生改变时的数据,如果数据不变时将不记录。

  即意味着:假设有30个监测点,探测器布点信息表中刚开始时有30条记录。过了一会数据刷新后,可能仅有30个监测点中的某几个点的数据发生了改变,而其他的数据依然不变。但我仍然需要保证读取到30个监测点的最新数据。

   
  表述的有点啰嗦了。不知各位有没什么好方法?

  我之前在VC中用ADO获取记录的代码为:
  _bstr_t strsql="select * from 探测器布点信息";

_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(_uuidof(Recordset));

try
{
m_pRecordset=theApp.m_pConnection->Execute(strsql,NULL,adCmdText);
}

catch (_com_error e)
{
//捕捉异常
AfxMessageBox(e.Description());
}

if(m_pRecordset->ADOEOF)
{
AfxMessageBox(L"表中记录为空!");
return;
}

long i=0;
while(!m_pRecordset->ADOEOF)
{
float longitude,latitude,altitude;//记录表中的经度、纬度和海拔
CString monitorID;//记录表中的监测点ID

longitude=(float)m_pRecordset->GetCollect("监测点经度");
latitude=(float)m_pRecordset->GetCollect("监测点纬度");
altitude=(float)m_pRecordset->GetCollect("监测点海拔");
monitorID=(char*)(_bstr_t)m_pRecordset->GetCollect("监测点ID");
m_pRecordset->MoveNext();

}

------解决方案--------------------
select 中 有group by 命令用于分组,order by 用于排序
selcet * from group by 监测点ID order by 时间

然后提取每组最新的数据就可以了。
------解决方案--------------------
楼主可以在某个表中定义一个变化值,如:bchange ; 分为两步:
1、写入:bchange = 1 ; 
2、读出:bchange = 0 ;

这样,你每次去读bchange = 1;的记录,当然,你读取之后就需要把bchange 置为0