⑴ 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條件裡面不能用本層查詢的欄位的別名。