结果集中的双重记录

时间:2013-05-22 07:01:59

标签: c# sql-server

我在MSSQL服务器上发现了一个奇怪的现象。

假设我们有一张桌子:

CREATE TABLE [testTable]
(
     [ID] [numeric](11, 0) NOT NULL,
     [Updated] [datetime] NULL,
     PRIMARY KEY (ID)
);

我根据更新字段做了一个简单的选择:

SELECT TOP 10000 ID, Updated
FROM testTable
WHERE Updated>='2013-05-22 08:55:12.152'
ORDER BY Updated

现在是有趣的部分:我怎样才能在结果集中有双重记录 - 我的意思是2条记录中具有不同更新值的相同ID。

对我来说似乎是,更新了更新日期时间值并且在结果集中又包含了一次。但这可能吗?

更新: 我用来从SQL服务器下载数据的源代码:

using (SqlCommand cmd = new SqlCommand(sql, Connection) { CommandTimeout = commandTimeout })
{
    using (System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(cmd))
    {
        DataTable retVal = new DataTable();
        adapter.Fill(retVal);
        return retVal;
    }
}

Connection = SqlConnection

sql =“SELECT TOP 10000 ....”

1 个答案:

答案 0 :(得分:0)

你的问题似乎缺乏一些细节,但这是我的想法。

我想到的第一个案例是你以某种方式选择那些ID两次(可能是 join group by ,......)。请手动检查您的表(在MSSQL Server中而不是在函数或方法内)以查看是否存在重复ID。如果有,则问题是您的主键未正确设置。否则,您需要提供用于选择数据的所有相关代码,以获得更多帮助。

另一种情况可能是某人或某事改变了主键,因此它位于IDUpdated上,允许相同的ID插入Updated字段的两倍也不匹配。

您也可以尝试此查询,以查看它是否在您的上下文中获得了重复的ID:

SELECT ID
from testTable
ORDER BY ID

我希望这会有所帮助。