对WHERE子句access sql中的指定数据进行排序

对WHERE子句access sql中的指定数据进行排序,sql,ms-access-2010,Sql,Ms Access 2010,我的下表是使用VBA转换为access表的excel工作表数据。我在对EID7006或EID3456所在的数据进行排序,即对所有列数据进行排序,但不排序EID=7006或EID=3456。但有时,根据我转换的excel文件,EID=7006不会出现在表中 表1的EID=7006和EID=3456 Description EID Basecode ----------- ---- --------- ssdad

我的下表是使用VBA转换为access表的excel工作表数据。我在对EID7006或EID3456所在的数据进行排序,即对所有列数据进行排序,但不排序EID=7006或EID=3456。但有时,根据我转换的excel文件,EID=7006不会出现在表中

表1的EID=7006和EID=3456

  Description    EID        Basecode        
   -----------    ----       ---------    
  ssdad          3456       S2378797     
  gfd            1002       S1164478     
  gfdsffsdf      1003       R1165778     
  ssdad          3456       M0007867     
  gfd            1005       N7765111     
  gfdsffsdf      7006        W5464111     
  gfd            1005       N7765111  
有时表1没有EID=7006

 Description    EID        Basecode        
   -----------    ----       ---------    
  ssdad          3456       S2378797     
  gfd            1002       S1164478     
  gfdsffsdf      1003       R1165778     
  ssdad          3456       M0007867     
  gfd            1005       N7765111     
  gfdsffsdf       88        W5464111     
  gfd            1005       N7765111  
如果我在表1中指定忽略7006或3456的查询,因为我不知道EID=7006是否存在,我在查询中表示为

   SELECT Description,EID,Basecode from table2 where EID<>7006 or EID<>3456

我仍然在结果查询中看到7006和3456

看起来您的问题正在使用或您的意思是

SELECT Description,EID,Basecode from table2 where EID<>7006 AND EID<>3456

看起来您的问题正在使用或您的意思是

SELECT Description,EID,Basecode from table2 where EID<>7006 AND EID<>3456
使用WHERE子句或在WHERE子句中使用WHERE子句是非常棘手的。在本例中,您的OR运算符的行为就像一个联合体。它的行为就像是你写的:

SELECT Description,EID,Basecode 
from table2 
where EID<>7006 

union

SELECT Description,EID,Basecode 
from table2 
where EID<>3456
由于每个集合都包含来自另一个集合的EID值,因此您将继续看到要过滤掉的EID值

你需要做的是写:

从表2中选择描述、EID、基本代码,其中EID7006和EID3456

或者,您可以将其表述为如下所示,这将产生与使用逻辑AND运算符相同的结果:

从表2中选择Description、EID、Basecode,其中EID不在70063456中,使用where子句或在where子句中使用是非常棘手的。在本例中,您的OR运算符的行为就像一个联合体。它的行为就像是你写的:

SELECT Description,EID,Basecode 
from table2 
where EID<>7006 

union

SELECT Description,EID,Basecode 
from table2 
where EID<>3456
由于每个集合都包含来自另一个集合的EID值,因此您将继续看到要过滤掉的EID值

你需要做的是写:

从表2中选择描述、EID、基本代码,其中EID7006和EID3456

或者,您可以将其表述为如下所示,这将产生与使用逻辑AND运算符相同的结果:

从表2中选择Description、EID、Basecode,其中EID不在70063456中

SELECT Description, EID, Basecode 
FROM table2 
WHERE EID NOT IN (7006, 3456)
稍微干净一点的查询是:

SELECT Description, EID, Basecode 
FROM table2 
WHERE EID NOT IN (7006, 3456)