基于复杂标准的SQL
我正在努力使用MS Access编写SQL语句,希望能得到任何帮助 我有一张桌子:基于复杂标准的SQL,sql,ms-access,Sql,Ms Access,我正在努力使用MS Access编写SQL语句,希望能得到任何帮助 我有一张桌子: *************************** * attr1 * attr2 * attr3 * *************************** * * A * 1 * * * B * 2 * * * B * 3 * * * C * 4 * *
***************************
* 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 *
***************************
Select attr1, attr2, attr3
from table
where attr1 is not null
or attr3 not in (select attr3 from table where attr1 is not null)
因此,我需要在结果中包含attr1不为null的所有行,以及attr3具有与attr1不为null的行不同的值的所有其他行
在Access中,我可以这样做:在一个查询中选择attr1不为null的所有行;在一个查找不匹配查询中选择attr3中的所有值不包含在第一个查询中的行;然后将这两个查询合并。。。但如果可能的话,我需要一些更直接的方法来处理一条sql语句
多谢各位 我想你可能需要这样的东西:
***************************
* attr1 * attr2 * attr3 *
***************************
* B * * 1 *
* D * * 1 *
* A * * 2 *
* * B * 3 *
* * C * 4 *
***************************
Select attr1, attr2, attr3
from table
where attr1 is not null
or attr3 not in (select attr3 from table where attr1 is not null)
没问题,很高兴我能帮上忙:出于好奇,您是否看到与“不存在”有任何性能差异。。。从表格中选择y1.attr1、y1.attr2、y1.attr3作为y1,其中y1.attr1不为空或不存在。从表格中选择1作为y2,其中y2.attr3=y1.attr3和y2.attr1不为空。据我所知,这取决于在该实例中哪个更可读/更容易理解。