2014-01-16 267 views
2

我做了一個簡單的查詢連接數據庫中的兩個表使用內部連接。查詢給出如下:子查詢返回多個值..查詢C#異常

Select t1.UserName,t1.Title,t1.FirstName,t1.LastName,t1.MiddleName,t1.IsActive,t1.ProgramID,t2.Email 
from table1 t1 
inner join table2 t2 on t1.UserId = t2.UserId 

查詢在SQL Server Management Studio中執行良好,返回行作爲必要的,但同時

adapter.fill(dataset); 

調試我在Visual Studio中的代碼,當它到達它拋出以下例外:

子查詢返回的值超過1。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。

這裏是C#代碼片段:

string selectCmd = @"Select t1.UserName,t1.Title,t1.FirstName,t1.LastName,t1.MiddleName,t1.IsActive,t1.ProgramID,t2.Email 
from table1 t1 
inner join table2 t2 on t1.UserId = t2.UserId "; 
DataSet dataset = new DataSet(); 
        using (SqlConnection conn = new SqlConnection(MyConnString)) 
        { 
         SqlDataAdapter adapter = new SqlDataAdapter(); 
         adapter.SelectCommand = new SqlCommand(selectCmd, conn); 
         conn.Open(); 
         adapter.Fill(dataset); 
        } 

任何建議,請?任何幫助將不勝感激。

+0

你可以發佈你的C#端代碼,它調用這個查詢並填充數據集? –

+0

使用'SELECT TOP 1' –

+1

選擇TOP 1無法使用,因爲查詢應該獲取滿足連接條件的所有行。 –

回答

0

您的加盟返回不止一個值,你試圖把這些值在單個參數..

例子:----這是你的錯誤查詢

 DECLARE @Test INT 
SET @Test = (SELECT ID FROM ABC A INNER JOIN XYZ X ON A.ID = X.AID) 

解決方案:

 DECLARE @Test INT 
    SET @Test = (SELECT TOP 1 ID FROM ABC A INNER JOIN XYZ X ON A.ID = X.AID) 
+0

你在哪裏在問題中看到這個? – StingyJack

+0

你確定,你給以上問題的解決方案? – Sachin

+0

正如我前面提到的,這個查詢應該獲取匹配連接條件的所有行,而不僅僅是TOP 1,所以這不是我的問題的解決方案。 –

0

好男人這是一個計時器的工作問題。必須在部署解決方案之前重新啓動Sharepoint計時器服務。