选择数据集的所有表行,其中课程等于2个特定值

本文关键字:2个 数据集 选择 | 更新日期: 2023-09-27 18:18:55

我有一个数据库,其中有一个名为MainData的表。数据格式如下:

ID  Lesson  Time    Score
1   C       165     4
1   E       190     3
1   H       195     3
1   I       200     4
2   A       100     2
2   B       150     5
2   D       210     2
2   E       110     4
3   D       130     5
3   E       190     5
3   H       210     4
3   I       160     4
3   J       110     4
4   E       120     3
4   H       150     4
4   J       170     4

我想写一个命令。让我用一个例子来解释

的例子:

如果Lesson等于EI(在本例中ID 3具有此条件),则该命令返回该特定ID的所有行。在这个数据集中,不止一个ID可以有这个条件。我需要的是返回这些特定id的所有行

谢谢你的帮助。

我已经尝试过的事情……

private void btn_recom_Click(object sender, EventArgs e)
{
   connection.Open();
   OleDbCommand command = new OleDbCommand();
   command.Connection = connection;
   private void GetRows()
   {
       // Get the DataTable of a DataSet.
       DataTable table = dsDataSet.Tables["MainData"];
       DataRow[] rows = table.Select();
       // Print the value one column of each DataRow.
   }
}

选择数据集的所有表行,其中课程等于2个特定值

下面的SQL可以完成这项工作,尽管它有点低效:

SELECT * FROM MainData WHERE ID IN
(SELECT T1.ID
FROM MainData AS T1 INNER JOIN MainData AS T2 ON T1.ID = T2.ID
WHERE T1.Lesson="E" AND T2.Lesson="I"
GROUP BY T1.ID);