0

各レーベルのスタッフIDの最新4件を表示したいのですが、どうすればよいでしょうか?

String strSQL = @"SELECT * FROM staff";
SqlCommand myCommand = new SqlCommand(strSQL, myConn);
SqlDataReader myDataReader = myCommand.ExecuteReader();

while (myDataReader.Read())
{
    Label1.Text = myDataReader["staffID"].ToString();
    Label2.Text = myDataReader["staffID"].ToString();
    Label3.Text = myDataReader["staffID"].ToString();
    Label4.Text = myDataReader["staffID"].ToString();
}               
4

7 に答える 7

2

次のようなクエリを使用する必要があります。

SELECT TOP 4 * 
FROM staff 
ORDER BY MyOrderColumn DESC

このようなクエリを使用すると、最後の 4 つのレコードが返されます。

于 2013-07-23T07:56:05.333 に答える
2

最初に、必要に応じて最後の 4 つだけを選択する必要があります。

String strSQL = @"SELECT TOP 4 staffID FROM staff ORDER BY staffID DESC";
using(var myCommand = new SqlCommand(strSQL, myConn))
using(var dataAdapter = new SqlDataAdapter(myCommand))
{
    DataTable table = new DataTable();
    dataAdapter.Fill(table);
    Label1.Text = table.Rows[0]["staffID"].ToString();
    Label2.Text = table.Rows[1]["staffID"].ToString();  
    Label3.Text = table.Rows[2]["staffID"].ToString();
    Label4.Text = table.Rows[3]["staffID"].ToString();
} 

スタッフが4人未満の場合は対応しなければなりません。

于 2013-07-23T07:57:54.047 に答える
0
With cte 
As 
(SELECT TOP 4 [StaffId]
   FROM [sample].[dbo].[Staff] 
  ORDER BY  [StaffId] desc) 

SELECT * 
  FROM cte 
 ORDER BY StaffId 
于 2013-07-23T08:01:38.450 に答える
0
String strSQL = @"SELECT TOP 4 StaffID FROM staff ORDER BY StaffID DESC"; //
SqlCommand myCommand = new SqlCommand(strSQL, myConn);
SqlDataReader myDataReader = myCommand.ExecuteReader();
int i = 0;
while (myDataReader.Read() && i<4)
{
    Label lblToSet = new Label();
    switch (i) 
    {
       case 0: lblToSet = Label1; break;
       case 1: lblToSet = Label2; break;
       case 2: lblToSet = Label2; break;
       case 3: lblToSet = Label3; break;
    }
    lblToSet.Text = myDataReader["staffID"].ToString();
    i++;
 }
于 2013-07-23T07:57:22.473 に答える