SQL基于复杂的标准

时间:2015-04-29 14:02:27

标签: sql ms-access

我正在努力学习我正试图在MS Access中编写的SQL语句,并希望得到任何帮助。

我有一张桌子:

 ***************************
 * attr1 * attr2 *  attr3  *
 ***************************
 *       *  A    *   1     *
 *       *  B    *   2     *
 *       *  B    *   3     *
 *       *  C    *   4     *
 *   B   *       *   1     *
 *   D   *       *   1     *
 *   A   *       *   2     *
 ***************************

我需要这样的结果:

 ***************************
 * attr1 * attr2 *  attr3  *
 ***************************
 *   B   *       *   1     *
 *   D   *       *   1     *
 *   A   *       *   2     *
 *       *  B    *   3     *
 *       *  C    *   4     *
 ***************************

因此,我在结果中需要attr1不为null的所有行,以及attr3与attr1不为null的行中的值不同的所有其他行。

我可以在Access中以一种方式进行查询,其中我选择attr1不为空的所有行,而不是一个“find unmatched”查询,其中我选择attr3中未包含在第一个查询中的值的所有行,而不是将这两个查询联合起来......但是我需要一些更直接的方法(如果可能的话,还需要一个sql语句)。

非常感谢!

1 个答案:

答案 0 :(得分:2)

我想你可能需要这样的东西:

Select attr1, attr2, attr3
from table
where attr1 is not null 
      or attr3 not in (select attr3 from table where attr1 is not null)