zoukankan      html  css  js  c++  java
  • MSSQL表别名使用注意事项

     1.在SQL语句中一旦指定了表别名,则不能再使用"表名称.列名"格式,只能使用"表别名.列名"格式来引用列.

    2.在SQL主句中使用子查询中的列时,必须为子查询指定一个表别名,然后以"表别名.列名"的格式来应用子查询中的列.当SQL主句的FROM子句仅为一个子查询时,必须为该子查询指定一个表别名,否则SQL语句无法执行.例如:
    SELECT ID FROM (select e.ID from employee as e  where (e.年度 = 2000) AND (e.月份 = 3))
    提示: ')' 附近有语法错误。正确的应该为:
    SELECT ID FROM (select e.ID from employee as e  where (e.年度 = 2000) AND (e.月份 = 3)) AS X

    3.子查询中使用了"表别名.列名"来引用列时,若此表别名在子查询和SQL主句中都不存在,则导致SQL语句无法执行.例如:
    SELECT ID FROM (select e.ID from employee  where (e.年度 = 2000) AND (e.月份 = 3)) AS X
    提示: 列前缀 'e' 与查询中所用的表名或别名不匹配。
    如果SQL主句中存在此表别名,则错误不会发生,但会导致无法预料的结果(通常导致该子查询返回结果为空).例如:
    SELECT e.* FROM (select * from sales as e where (e.年度 = 2006) and (e.月份 = 3)) AS e 
    WHERE (e.员工号 NOT IN (select e.员工号 from sales  where (e.年度 = 2000) AND (e.月份 = 3)))
    此SQL语句执行后,导致主句的WHERE子句的子查询返回空值,使WHERE子句结果为真,筛选实效.
    正确的为:
    SELECT e.* FROM (select * from sales as e where (e.年度 = 2006) and (e.月份 = 3)) AS e 
    WHERE (e.员工号 NOT IN (select e.员工号 from sales as e where (e.年度 = 2000) AND (e.月份 = 3)))
  • 相关阅读:
    Docker最简教程
    Linux下Docker快速部署LAMP
    NachosLab3同步与互斥机制模块实现
    另类P、V操作问题详细图解
    IE10兼容性问题(frameset的cols属性)
    oracle分页sql(rownum伪列使用)
    fusionchart图表遮挡Ext下拉控件或日期控件解决办法(IE下有问题firefox与chrome正常)
    js比较和逻辑运算符运算符
    JBPM4开发简介
    整合axis2到web项目中
  • 原文地址:https://www.cnblogs.com/fjchenqian/p/1381601.html
Copyright © 2011-2022 走看看