[英]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.