Access几个小技巧总结

来源:互联网 发布:手机淘宝私人定制 编辑:程序博客网 时间:2024/05/19 00:43
1、查询Access中的表名称
select name from MSysObjects where type=1 and flags=0 MSysObjects

2、几个查询结果Union All时,当使用了无表查询时,提示“查询输入必须包含至少一个表或查询”
  也就是说在Access里,这样的查询,并不能出想要的结果
  select 'wallimn'
    union all
    select name from MSysObjects

  这时可以建一个一行一列的表,比如效仿Oracle,建一个DUAL,从这个表里查些不相干的东西就行了。
  select 'wallimn' from dual
    union all
    select name from MSysObjects

3、Access多表外联查询(三个或以上)的写法

SELECT * FROM (aa LEFT JOIN bb ON aa.a = bb.a ) LEFT JOIN cc ON cc.a = bb.a;

注意:在使用join语句查询时,如果有加多个On条件,必须用括号括起来,如:

SELECT * FROM (aa LEFT JOIN bb ON aa.a=bb.a) LEFT JOIN cc ON(bb.a=cc.a and bb.b=cc.b)

其他例子可以参考:

(1)、SELECT * FROM URL as a LEFT OUTER JOIN MobileAfter as b ON a.URL = b.URL

(2)、SELECT * FROM (URL as a LEFT OUTER JOIN MobileAfter as b ON a.URL= b.URL) LEFT OUTER JOIN MobileBefore as c ONc.URL=a.URL

(3)、SELECT * INTO Ttable1 FROM ((((URL as a
LEFT OUTER JOIN MobileAfter as b ON a.URL=b.URL)
LEFT OUTER JOIN MobileBefore as c ON c.URL=a.URL)

LEFT OUTER JOIN TeleCOM as d ON d.URL=a.URL) LEFT OUTER JOIN UniCOM as e ON e.URL=a.URL)


以上部分摘自 : http://wallimn.iteye.com/blog/1956053



/********************************************/

当使用left join时, 如果有多个条件, 则需要添加(),这点与MSSQL不一样。如:

select a.[permission_vccomment], a.[permission_idx]  , b.[role_group_cflag]  
    from [permission] a left join [role] b  
      on a.[permission_idx] = b.[role_permission_idx]  
     and  b.[role_group_cflag] = N'20171025G002'
这条语句在MSSQL中正常, 但Access则报错。必须写成这样:

  select a.[permission_vccomment], a.[permission_idx]  , b.[role_group_cflag]  
    from
     (
       [permission] a left join [role] b  
         on  (a.[permission_idx] = b.[role_permission_idx]   
               and
               b.[role_group_cflag] =  '20171025G002')
 
      ),

注意内嵌的括号, on后面。




参见: http://wallimn.iteye.com/blog/1956053


原创粉丝点击