[英]Double records in result set
我在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相同,但更新值不同。
对我来说,似乎更新了datetime值已更改,并且在结果集中又包含了一个时间。 但是有可能吗?
更新:我用于从SQL Server下载数据的源代码:
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;
}
}
连接= SqlConnection
sql =“ SELECT TOP 10000 ....”
您的问题似乎缺少一些细节,但这是我的想法。
我想到的第一种情况是您以某种方式两次选择了这些ID(可能是join , group by ,...)。 请手动检查表内部(在MSSQL Server中,而不是在函数或方法中),以查看是否有重复的ID。 如果存在,则问题在于您的主键设置不正确。 否则,您将需要提供用于选择数据的所有相关代码,以获得更多帮助。
另一种情况可能是某人或某物更改了主键,因此它既在ID
又在Updated
,只要Updated
字段也不匹配,就允许插入相同的ID两次。
您也可以尝试使用此查询来查看它是否在上下文中获得重复的ID:
SELECT ID
from testTable
ORDER BY ID
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.