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

我有一个数据库,其中有一个名为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的所有行。

BTW,mydataset是访问。

你的帮助很大。

我已经尝试过的东西……

 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. } } 

以下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);