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

原文地址:http://www.cnblogs.com/dwfbenben/p/3307941.html

当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.   例如下面的SQL语句:

select id, (c1 + c2) as s from t1  where s > 100   SQL Server 报错: "列名 s 无效"     当然,写成     select id, (c1 + c2) as s from t1  where (c1 + c2) > 100

就没问题了.   可是当表达式复杂时就很繁琐了.     有没有可以在Where中使用这样的列名的办法?   或者有什么其他办法可以解决这类问题呢? 解决方法:

SQL code复制代码
select t2.*
from (select id, (c1 + c2) as c from t1) t2
where c > 100

  --或者

select t2.*
from (select id, c = c1+c2 from t1) t2
where c > 100

由于在Where语句不能直接使用列别名,因此我们需要将Sql语句给包装一下                        在ORACLE中,在WHERE子句中引用列别名会出错,这是为什么呢?                        因为:SELECT 语句的执行顺序                        1. from语句                        2. where语句(结合条件)                        3. start with语句                        4. connect by语句                        5. where语句                        6. group by语句                        7. having语句                        8. model语句                        9. select语句                        10. union、minus、intersect等集合演算演算                        11. order by语句

时间: 2024-11-29 04:36:15

转载:SQL语句Where中使用别名作为判断条件的相关文章

通过带参数的Sql语句来实现模糊查询(多条件查询)

#region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books"); List<string> listWheres = new List<string>(); List<SqlParameter> listParams = new List<SqlParameter>(); if (txtBookName.Text.T

一个项目涉及到的50个Sql语句(验证中)

--1.学生表 Student(S,Sname,Sage,Ssex) --S 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(C,Cname,T) --C --课程编号,Cname 课程名称,T 教师编号 --3.教师表 Teacher(T,Tname) --T 教师编号,Tname 教师姓名 --4.成绩表 SC(S,C,score) --S 学生编号,C 课程编号,score 分数 */ --创建测试数据 create table Stu

sql语句查询表中重复字段以及显示字段重复条数

今天跟大家分享两条SQL语句,是关于查询某表中重复字段以及显示该字段的重复条数. 1.select * from 表名 where 列名 in (select 列名 from 表名 group by 列名 having COUNT(*)>1) order by 列名 运行结果: 注*将表中某列下所有重复的字段查询出来,如果想查询该列中重复条数>=n的话,只需将sql语句中的">1"改为"n-1"即可. 2.select 列名,count(*) CO

SQL语句oracle中如何插入Date类型的数据

转:http://chwshuang.iteye.com/blog/933926 在开发的时候,经常要写条SQL语句将信息插入表中,插入的数据如果字段是date类型,就必须将date类型转换成字符串String类型在通过sql语句插入数据库.这是我字段唯一的方法,如果有高人请另赐教! 我的解决方法是用oracle中的to_date()方法,具体看下面的例子 Oracle中插入date数据代码 insert into news(ID,MSG,SEND_TIME,TIMER) Oracle中插入da

Sql语句 表中相同的记录(某个字段)只显示一条,按照时间排序显示最大或最小

原始表数据: 想要的结果数据为: sql语句: select * from Table_1 where DT in(select min(DT)   from Table_1 group by AccountID)  --DT为时间字段

C#后台sql语句注释,根据isnull()方法进行条件选择

select isnull(b.guid,k.guid) as project_id,isnull(b.projectno,k.projectno) as projectno, isnull(b.projectname,k.projectname) as projectname,c.COMPANYNAME as customer, isnull(b.project_date,k.project_date) as project_date,d.typecn,a.guid as apply_id,a

SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法

本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种写法孰优孰劣,该选用那种写法,以及各种写法优缺点,本文以一个简单的查询存储过程为例,简单说一下各种写法的区别,以及该用那种写法专业DBA以及熟悉数据库的同学请无视. 废话不多,上代码说明,先造一个测试表待用,简单说明一下这个表的情况 类似订单表,订单表有订单ID,客户ID,订单创建时间等,查询条件是

[转载]SQL语句中的日期计算

1. 本月的第一天SELECT  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0) 2. 本月的最后一天SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(m,0,getdate())+1,  0)) 3.上个月的第一天select dateadd(m,-1,  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0)) 4. 上个月的最后一天 SELECT  dateadd(ms,-3,DATE

【python】sql语句插入中内容同时包含单引号和双引号的解决办法

在python中调用MySQLdb模块插入数据信息,假设待输入信息data为: Hello'World"! 其中同时包含了单引号和双引号 一般插入语句为 sql = "insert into tb (my_str) values('%s')" % (data) cursor.execute(sql) 其中values('%s')中的%s外面也要有引号,这个引号与data中的引号匹配导致了内容错误 解决办法:转义字符 将data变为下面的形式,再插入数据库就正确了 Hello\