首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检索2个sql查询中指定的列数据

如何检索2个sql查询中指定的列数据
EN

Stack Overflow用户
提问于 2014-04-14 19:25:21
回答 1查看 72关注 0票数 0

我有一张桌子(tbl1)

代码语言:javascript
复制
 Description    EID        Basecode        
   -----------    ----       ---------    
  ssdad          1001       S2378797     
  gfd            1002       S1164478     
  gfdsffsdf      1003       R1165778     
  ssdad          1004       M0007867     
  gfd            1005       N7765111     
  gfdsffsdf      1006       W5464111     
  gfd            1005       N7765111     
  gfdsffsdf      1006       A4000011 
  gfdsffsdf      1006       W5464111     
  ssdad          1001       2378797     
  gfd            1002       1164478  
  ssdad          1001       965000
  gfd            1002       780000
  yjgk           4456       540000
  kjhkh          2009       150000
  ddd            1004       1040
  d88jg          1004       14C676
   fsa           6565       158 
   fdh           1004       2Khlm
   ggdg          2009       967

我正在检索所有Basecode列数据,该查询仅以'W‘、'N’以外的字母开头

代码语言:javascript
复制
 SELECT tbl1.EID,tbl1.Description,tabl1.Basecode FROM tbl1 WHERE Not 
 IsNumeric(Left(Basecode,1)) AND Left(Basecode,1) Not In ("W","N");

如果列数据长度>6,并以'96‘、'78’、'54‘、'15’号查询,则检索所有Basecode

代码语言:javascript
复制
SELECT tbl1.EID,tbl1.Description,tabl1.Basecode FROM tbl1 
WHERE (((Len([Basecode]))>6)AND ((Left([Basecode],2))='15')) OR
(((Len([Basecode]))>6) AND ((Left([Basecode],2))='54')) OR 
(((Len([Basecode]))>6) AND ((Left([Basecode],2))='78')) OR 
(((Len([Basecode]))>6) AND  ((Left([Basecode],2))='96'));

如何获得基于上述查询而不会检索的其他数据,除了在这些查询中提到的数据以外

代码语言:javascript
复制
Description       EID        Basecode        
   -----------    ----       ---------    

  ssdad          1001       2378797     
  gfd            1002       1164478  
  ddd            1004       1040
  d88jg          1004       14C676
  fsa            6565       158 
  fdh            1004       2Khlm
   ggdg          2009       967

第三次查询无效

代码语言:javascript
复制
SELECT tbl1.EID,tbl1.Description,tabl1.Basecode FROM tbl1 
WHERE (IsNumeric(Left(Basecode,1)) AND Left(Basecode,1) Not In ("W","N"))
AND NOT (((Len([Basecode]))>6)AND ((Left([Basecode],2))='15')) OR
(((Len([Basecode]))>6) AND ((Left([Basecode],2))='54')) OR 
(((Len([Basecode]))>6) AND ((Left([Basecode],2))='78')) OR 
(((Len([Basecode]))>6) AND  ((Left([Basecode],2))='96'));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 16:24:05

就像这样:

代码语言:javascript
复制
SELECT DISTINCT tbl1.EID,tbl1.Description,tabl1.Basecode 
FROM tbl1 
WHERE Basecode NOT IN
(
  SELECT tabl1.Basecode 
  FROM tbl1 
  WHERE Not IsNumeric(Left(Basecode,1)) AND Left(Basecode,1) Not In ("W","N");
  UNION
  SELECT tabl1.Basecode
  FROM tbl1 
  WHERE Len([Basecode])>6 AND  Left([Basecode],2) IN ('15','54','78','96')
)

这也能起作用

代码语言:javascript
复制
SELECT DISTINCT tbl1.EID,tbl1.Description,tabl1.Basecode 
FROM tbl1 
WHERE 
  Basecode NOT IN
  (
    SELECT tabl1.Basecode 
    FROM tbl1 
    WHERE Not IsNumeric(Left(Basecode,1)) AND Left(Basecode,1) Not In ("W","N");
  ) T1 AND 
  Basecode NOT IN
  (
    SELECT tabl1.Basecode
    FROM tbl1 
    WHERE Len([Basecode])>6 AND  Left([Basecode],2) IN ('15','54','78','96')
  ) T2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23068569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档