返回与第2列中的条件选择的行的第1列匹配的所有行

时间:2016-10-13 15:46:19

标签: sql ms-access ms-access-2010

不幸的是,我认为我可以应用的解决方案非常有限。我这样做是为了工作,我只有权通过Access 2010从表中进行SELECT。我无法更新或创建表。我找不到有用的信息,例如后端的sql版本,更不用说直接访问数据库或使用VBA。

假设我们有这样的数据集(看起来粗糙,对不起):

MemberID   |  StatusCd   |  Date Added
12345      |  200        | 08/01/2016
12345      |  300        | 09/01/2016
12345      |  400        | 10/01/2016
5646       |  400        | 10/01/2016
8946       |  100        | 07/01/2016

现在,这个数据库非常庞大,如果我试图拉动表中的所有成员并在之后处理它,那将是一个巨大的性能问题。我想要的是返回共享MemberID的所有行,其中该MemberID的至少一行是StatusCd 300.例如,如果我想要有关命中状态300的成员的信息,那么所需的表将如下所示:

MemberID   |  StatusCd   |  Date Added
12345      |  200        | 08/01/2016
12345      |  300        | 09/01/2016
12345      |  400        | 10/01/2016

但是,现在当我尝试使用使用WHERE StatusCd = 300的SELECT命令时,我只得到满足该条件的一行。我不知道它是否会干扰任何事情,但我目前正在将此表加入到memberID上的另一个表中,以获得更小,更相关的表集。省略StatusCd 300之前的行也是一件好事,但这只是一小部分额外数据,不会让他们受到太多伤害。

感谢任何人提供的任何帮助!

编辑:根据评论反馈调整短语。

1 个答案:

答案 0 :(得分:0)

要获取至少有一行statuscd为300的成员的所有行,请先使用子查询选择所有相应的memberid,然后从memberid中选择所有行表:

select * 
from t 
where memberid in (
   select memberid from t where statuscd = 300
)