2015-03-03 59 views
0

我需要:C#:SQL「Select Top ..」查詢不返回任何行嗎?

1) 「NodeParent」(我提供)

2)對行進行排序由 「時間」 過濾行,並獲得最新的條目

這裏的我寫了什麼:

using (SqlConnection con = new SqlConnection(conString)) 
{ 
     SqlCommand cmd = new SqlCommand("SELECT TOP 1 NodeID FROM ActivityTable WHERE NodeParent='" + nodeid_previous + "'" + " ORDER BY Time DESC", con); 

     con.Open(); 
     SqlDataReader rdr = cmd.ExecuteReader(); 
     if (rdr.HasRows) 
     { 
      while (rdr.Read()) 
      { 
        nodeid_previous = rdr["NodeID"].ToString(); 
        break; 
      } 
      rdr.Close(); 
     } 
     else 
     { 
      //so on and so forth.. 
     } 
} 

但是這並不返回任何結果,即使我有行遵守這些條件。查詢是否正確? :)

+3

號'top'不是一個MySQL構建。使用'limit'。 – 2015-03-03 03:43:03

+0

而不是頂部我應該用極限來代替它? @GordonLinoff – MWUser 2015-03-03 03:49:35

+1

'SqlCommand cmd = new SqlCommand(''SELECT NodeID FROM ActivityTable WHERE NodeParent ='「+ nodeid_previous +」'ORDER BY Time DESC Limit 1「,con);' – 2015-03-03 04:00:14

回答

1

以前

SqlCommand cmd = new SqlCommand("SELECT TOP 1 NodeID FROM ActivityTable WHERE NodeParent='" + nodeid_previous + "'" + " ORDER BY Time DESC", con); 

- 限制添加到您的查詢的末尾,而不是在你一開始選擇列表,如MS SQL Server的top命令

SqlCommand cmd = new SqlCommand("SELECT NodeID FROM ActivityTable WHERE NodeParent='" + nodeid_previous + "'" + " ORDER BY Time DESC Limit 1", con); 
0

最後必須使用「限制1」。 MYSQL中沒有「TOP 1」。我想這是SQLServer命令。

務必:

SqlCommand cmd = new SqlCommand("SELECT NodeID FROM ActivityTable WHERE NodeParent='" + nodeid_previous + "'" + " ORDER BY Time DESC Limit 1", con);