簡體   English   中英

在結果集中重復記錄

[英]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(可能是joingroup by ,...)。 請手動檢查表內部(在MSSQL Server中,而不是在函數或方法中),以查看是否有重復的ID。 如果存在,則問題在於您的主鍵設置不正確。 否則,您將需要提供用於選擇數據的所有相關代碼,以獲得更多幫助。

另一種情況可能是某人或某物更改了主鍵,因此它既在ID又在Updated ,只要Updated字段也不匹配,就允許插入相同的ID兩次。

您也可以嘗試使用此查詢來查看它是否在上下文中獲得重復的ID:

SELECT ID
from testTable
ORDER BY ID

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM