我在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 ....”
答案 0 :(得分:0)
你的问题似乎缺乏一些细节,但这是我的想法。
我想到的第一个案例是你以某种方式选择那些ID两次(可能是 join , group by ,......)。请手动检查您的表(在MSSQL Server中而不是在函数或方法内)以查看是否存在重复ID。如果有,则问题是您的主键未正确设置。否则,您需要提供用于选择数据的所有相关代码,以获得更多帮助。
另一种情况可能是某人或某事改变了主键,因此它位于ID
和Updated
上,允许相同的ID插入Updated
字段的两倍也不匹配。
您也可以尝试此查询,以查看它是否在您的上下文中获得了重复的ID:
SELECT ID
from testTable
ORDER BY ID
我希望这会有所帮助。