⑴ sql 中如何用别名作为查询条件
SQL Server 2005/2008
Oracle 10/11
可以用 CTE, 来 “曲线”的实现这个要求.
例如:
1> with myCTE AS (
2> SELECT 1+2+3+4 AS 别名 UNION ALL
3> SELECT 2+3+4+5 AS 别名
4> )
5> SELECT * FROM myCTE WHERE 别名 = 10
6> go
别名
-----------
10
(1 行受影响)
⑵ SQL别名用法!!
这个简单吧:
Select (a+b+c+……) as var,(a+b+c+……)/N as var/N from student;
as关键字可以省略
还可以这样写
Select var,var/N from (
Select (a+b+c+……) as var from student
);
不知楼主是否满意。
⑶ 在select 中的别名 能做 条件吗
select(SYSDATE-1)AA,(AA+3)BBFROMDUAL;
--报错,别名在SELECT语句选中字段或者表达式后生效,不能用别名在SELECT语句中直接进行运算,因为SELECT会吧AA+3当成一个字段解读,但是AA这个别名是在SELECT之后生成的,所以会报错。
selectSYSDATE-1AAFROMDUAL;--正确
所以你要搞清楚别名产生的时机以及sql语句各个子句的执行顺序,就很容易搞明白了
--列别名
--当一个select语句中包含好函数或者表达式的时候
--查询结果对应的该字段就是使用这个函数或者表达式
--作为名字的字段
--使用别名时因SQL语句各子句的执行顺序引起的问题
ORACLE中的SQL语句:
1.WHERE/GROUPBY/HAVING子句中只能直接使用栏位或者常量,而不能使用栏位的别名,
除非这个别名来自子查询之中。
如:SELECT....FROM(SELECTCOLUMN_NAMECFROMTABLE_NAME)WHEREC>1
为什么在子查询中可以是因为子查询一般都跟在FROM语句之后,而FROM语句是先执行的
所以FROM语句里面子查询的别名肯定是先于外层查询语句的子句先生成的。所以子查询
过后可以使用别名。
2.而ORDERBY则可以直接使用别名,如SELECTCOLUMN_NAMECFROMTABLE_NAMEORDERBYC
这和SQL的执行顺序是有关的。
SQL语句的执行顺序大致如下所示:
1.FROM语句
2.WHERE语句(结合条件)
3.STARTWITH语句
4.CONNECTBY语句
5.WHERE语句
6.GROUPBY语句
7.HAVING语句
8.MODEL语句
9.SELECT语句
10.UNION、MINUS、INTERSECT等集合演算演算
11.ORDERBY语句
我们可以看到SELECT子句是在WHERE子句执行后才执行的,当SELECT子句执行时查询列的别名才生成,
所以在WHERE子句中根本看不到列的别名,当然,自然也就无法引用列的别名了。
所以字段、表达式的别名在WHERE子句和GROUPBY子句都是不能使用的。
而在ORDERBY中不仅可以使用别名,甚至可以直接使用栏位的下标来进行排序。
如:ORDERBYID或者ORDERBY1
⑷ 在SQL―Select查询语句中,若要给字段取一个别名,应使用什么关键字
以下种办法都可以,as和直接用空格都行
selectcolumnAasNEWA
selectcolumnANEWA
⑸ 怎样用sql语句查询所有字段,但是又得给某一个字段设置一个别名
1、新建一个test数据库,在数据库中创建一个data数据表,在表内插入四条测试数据。
⑹ sql中如何为查询出来的表起别名呢,而且能根据查询后的表别名就查找
1、查看数据库中的表信息。
注意事项:
SQL的核心部分相当于关系代数,但又具有关系代数所没有的许多特点,如聚集、数据库更新等。它是一个综合的、通用的、功能极强的关系数据库语言。
⑺ SQL 查询出的值起别名
学生表(stuTable),另外再建一张性别表(sexTable),只需要2个字段,代号(sex_id) 和性别(sex),然后插入两行数据,(1,男)和(2,女)。
比如说stuTable有3个字段,学号(sno),姓名(sna),性别(sex_id)
那SQL语句就那么写:select stuTable.sno,stuTable.sna,sexTable.sex from stuTable left join sexTable on stuTable.sex_id = sexTable.sex_id
如果还需要筛选的话再在后面用where条件。
如果用as的是只是给字段起一个名字而已,并不能改变查询结果
⑻ sql语句中别名怎么使用
这里不能用rn
你的意思可能是
select a.* from (select t.*,rownum rn from emp t order by sal desc) a where rn<10
这样就可以用了,在where条件里面不能用本层查询的字段的别名。