分享

SQL语句Where中使用别名作为判断条件

 陈奕燊 2018-03-01
  1. 当我们使用某个表达式作为输出的一列时  
  2.   
  3. ,  
  4.   
  5. 我们无法再  
  6.   
  7. Where  
  8.   
  9. 条件中直接使用该列作判断条件  
  10.   
  11. .    
  12.   
  13.     
  14.   
  15. 例如下面的  
  16.   
  17. SQL  
  18.   
  19. 语句  
  20.   
  21. :   
  22.   
  23. select id, (c1 + c2) as s from t1  where s > 100    
  24.   
  25.   SQL Server   
  26.   
  27. 报错  
  28.   
  29. :  
  30.   
  31.  "  
  32.   
  33. 列名  
  34.   
  35.  s   
  36.   
  37. 无效  
  38.   
  39. "   
  40.   
  41.    
  42.   
  43.     
  44.   
  45. 当然  
  46.   
  47. ,  
  48.   
  49. 写成  
  50.   
  51.     
  52.   
  53.     select id, (c1 + c2) as s from t1  where (c1 + c2) > 100    
  54.   
  55.     
  56.   
  57. 就没问题了  
  58.   
  59. .    
  60.   
  61.     
  62.   
  63. 可是当表达式复杂时就很繁琐了  
  64.   
  65. .    
  66.   
  67.     
  68.   
  69. 有没有可以在  
  70.   
  71. Where  
  72.   
  73. 中使用这样的列名的办法  
  74.   
  75. ?    
  76.   
  77.     
  78.   
  79. 或者有什么其他办法可以解决这类问题呢  
  80.   
  81. ?    
  82.   
  83. 解决方法:  
  84.   
  85.    
  86.   
  87. SQL code  
  88.   
  89. 复制代码  
  90.   
  91.    
  92.   
  93. select t2.*   
  94.   
  95. from (select id, (c1 + c2) as c from t1) t2   
  96.   
  97. where c > 100   
  98.   
  99.    
  100.   
  101.   --  
  102.   
  103. 或者  
  104.   
  105.    
  106.   
  107.    
  108.   
  109. select t2.*   
  110.   
  111. from (select id, c = c1+c2 from t1) t2   
  112.   
  113. where c > 100   
  114.   
  115. 由于在  
  116.   
  117. Where  
  118.   
  119. 语句不能直接使用列别名,因此我们需要将  
  120.   
  121. Sql  
  122.   
  123. 语句给包装一下  
  124.   
  125.    
  126.   
  127. 在  
  128.   
  129. ORACLE  
  130.   
  131. 中,在  
  132.   
  133. WHERE  
  134.   
  135. 子句中引用列别名会出错,这是为什么呢?  
  136.   
  137.    
  138.   
  139. 因为:  
  140.   
  141. SELECT   
  142.   
  143. 语句的执行顺序  
  144.   
  145.    
  146.   
  147. 1. from  
  148.   
  149. 语句  
  150.   
  151.    
  152.   
  153. 2. where  
  154.   
  155. 语句  
  156.   
  157. (  
  158.   
  159. 结合条件  
  160.   
  161. )   
  162.   
  163. 3. start with  
  164.   
  165. 语句  
  166.   
  167.    
  168.   
  169. 4. connect by  
  170.   
  171. 语句  
  172.   
  173.    
  174.   
  175. 5. where  
  176.   
  177. 语句  
  178.   
  179.    
  180.   
  181. 6. group by  
  182.   
  183. 语句  
  184.   
  185.    
  186.   
  187. 7. having  
  188.   
  189. 语句  
  190.   
  191.    
  192.   
  193. 8. model  
  194.   
  195. 语句  
  196.   
  197.    
  198.   
  199. 9. select  
  200.   
  201. 语句  
  202.   
  203.    
  204.   
  205. 10. union  
  206.   
  207. 、  
  208.   
  209. minus  
  210.   
  211. 、  
  212.   
  213. intersect  
  214.   
  215. 等集合演算演算  
  216.   
  217.    
  218.   
  219. 11. order by  
  220.   
  221. 语句  
  222.   
  223.    
  224.   
  225.    

请选中你要保存的内容,粘贴到此文本框

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多