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)))
  • 相关阅读:
    Java面向对象之封装静态
    分布式平台Spark环境的搭建
    高斯混合模型
    异常排除: 调用方未由服务进行身份验证
    HttpClient介绍和简单使用流程
    阿里短信服务的使用流程
    笔记工具选择
    特效图文制作
    语言基础(23):智能指针
    无线通信基础(一):无线网络演进
  • 原文地址:https://www.cnblogs.com/fjchenqian/p/1381601.html
Copyright © 2011-2022 走看看