❶ sql查詢語句中,什麼叫子查詢
嵌套SELECT語句也叫子查詢,一個 SELECT 語句的查詢結果能夠作為另一個語句的輸入值。子查詢不但能夠出現在Where子句中,也能夠出現在from子句中,作為一個臨時表使用,也能夠出現在select list中,作為一個欄位值來返回。
1、單行子查詢 :單行子查詢是指子查詢的返回結果只有一行數據。當主查詢語句的條件語句中引用子查詢結果時可用單行比較符號(=, >, <, >=, <=, <>)來進行比較。
例:
select ename,deptno,sal
from emp
where deptno=(select deptno from dept where loc='NEW YORK');
2、多行子查詢:多行子查詢即是子查詢的返回結果是多行數據。當主查詢語句的條件語句中引用子查詢結果時必須用多行比較符號(IN,ALL,ANY)來進行比較。其中,IN的含義是匹配子查詢結果中的任一個值即可("IN" 操作符,能夠測試某個值是否在一個列表中),ALL則必須要符合子查詢的所有值才可,ANY要符合子查詢結果的任何一個值即可。而且須注意ALL 和ANY 操作符不能單獨使用,而只能與單行比較符(=、>、< 、>= 、<= 、<>)結合使用。
例:
1).多行子查詢使用IN操作符號例子:查詢選修了老師名叫Rona(假設唯一)的學生名字
sql> select stName
❷ 在SQL語句中,分組用什麼子句,排序用什麼子句
排序採用ORDER BY語句:ORDER BY 語句用於根據指定的列對結果集進行排序。ORDER BY 語句默認按照升序對記錄行排序。如果希望按照降序對記錄進行排序,可以使用 DESC關鍵字。
SQL有兩種使用方式:
一是聯機交互使用,這種方式下的SQL實際上是作為自含型語言使用的。
另一種方式是嵌入到某種高級程序設計語言(如C語言等)中去使用。前一種方式適合於非計算機專業人員使用,後一種方式適合於專業計算機人員使用。盡管使用方式不向,但所用語言的語法結構基本上是一致的。
(2)sql語句的子語句擴展閱讀:
以同一種語法結構提供兩種使用方式:
SQL既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用於聯機交互的使用方式,用戶可以在終端鍵盤上直接輸入SQL命令對資料庫進行操作。作為嵌入式語言,SQL語句能夠嵌入到高級語言(如C、 C#、JAVA)程序中,供程序員設計程序時使用。
而在兩種不同的使用方式下,SQL的語法結構基本上是一致的。這種以統一的語法結構提供兩種不同的操作方式,為用戶提供了極大的靈活性與方便性。
❸ 資料庫 SQL語句 子查詢執行過程
子查詢執行過程,可以用以下例子來說明:
語句如下:
select*fromscorewheresidin(selectsidfromstudentwhere班級='一班')
在sql語句中,資料庫先執行的是括弧中的部分,得出student表中一班學生的sid,然後再在score表中選出sid為一班id的哪些學生的詳細內容。
❹ 求SQL子查詢語句
不用子查詢就能出結果啊
select a.userid,a.name,sum(money) as money from a, b where a.userid=b.userid and freeze='true' group by a.userid,a.name
------------------
排序就在語句後加
order by a.userid asc
你查不到結果?
這個a.DeptID=1 是什麼?不會是寫錯了吧
如果這個代表freeze的話。。。。一定要放到表b內!
==========================
Select a.UserID, a.Name, Sum(b.Money) As Money
From a, b
Where a.DeptID=1 And b.UserID=a.UserID And b.freeze='true'
Group By a.UserID, a.Name
order by a.userid asc
❺ SQL語句的SELECT語句中用於實現選擇運算的子句是什麼
1、SELECT DISTINCT 列名稱 FROM 表名稱,為student表內容。
❻ SQL語句中,子句不能使用列別名問題
當select的表達式很長時,我們經常會用as子句為該表達式指定別名,然而卻發現無法在Where條件中直接使用該別名作為判斷條件.
例如下面的SQL語句:
select id, (c1 + c2) as s from t1 where s > 100
運行會報錯: 「列名 s 無效」
當然,寫成
select id, (c1 + c2) as s from t1 where (c1 + c2) > 100
就可以。
SQL語句中,為什麼where子句不能使用列別名,而order by卻可以?
在ORACLE中,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語句
在SQLServer中,select語句的執行順序是:
(1)FROM JOIN ON
(2)WHERE
(3)GROUP BY
(4)HAVING
(5)SELECT DISTINCT TOP()
(6)ORDER BY
由select語句的執行順序,我們可以發現在where子句執行的時候,取別名的語句還沒執行,即該別名不存在,自然就不能使用了,而order by的時候別名就已經命名好了。
我們還可以知道:如果在from子句中指定了表別名,那麼它所在的select 語句中其他子句都必須使用表別名來代替原始的表名,因為from子句是select語句中最先被執行的。
❼ SQL語句中insert子句問題
第一句中: <form id="form1" name="form1" method="post" action(這里表示這個form里的數據是提交到insert.asp頁面處理)="insert.asp?action(這個action是個變數名稱)=insert"> 第二句中: action(這是個變數名稱)=request.QueryString("action(這里即是第一句中的變數名稱)"),結果即是:action="insret"
❽ SQL語句有哪些常用子句
1.說明:復製表(只復制結構,源表名:a 新表名:b) (Access可用)
方法一:select * into b from a where 1<>1
方法二:select top 0 * into b from a
2.注意:復制的新表中的所有欄位都將沒有默認值,即使源表中有設默認值
說明:跨資料庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)
insert into b(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
3.說明:顯示文章、提交人和最後回復時間
select a.title,a.username,b.adddate from a,(select max(adddate) adddate from table,a where table.title=a.title) b
4.說明:兩張關聯表,刪除主表中在副表中沒有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
注意:
若將
select * from table2 where table1.field1=table2.field1
改為
select * from table1,table2 where table1.field1=table2.field1
多了一個table1
則刪除不成功
5.說明:日程安排提前五分鍾提醒
select * from 日程安排 where datediff(mi,開始時間,getdate())>5
6.說明:一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位
7.說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
8.說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
9.說明:隨機取出10條數據
select top 10 * from tablename order by newid()
10.說明:隨機選擇記錄
select newid()
11.說明:刪除重復記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
12.說明:列出資料庫里所有的表名
select name from sysobjects where type='U'
13.說明:列出表裡的所有的
select name from syscolumns where id=object_id('TableName')
使用SQL語句 用...代替過長的字元串顯示
語法:
SQL資料庫:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access資料庫:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
--獲得當月最後一天,時間全是0,如:2007-09-30 00:00:00.000
select dateadd(dd,-1,dateadd(mm,datediff(mm,0,dateadd(mm,1,getdate())),0))
--獲得當月最後一天,時間為當前時間,如:2007-09-30 12:07:37.030
select dateadd(dd,-1,dateadd(mm,1,getdate()-day(getdate())+1))
--獲得當月天數,如:30
select datediff(dd,getdate()-day(getdate())+1,dateadd(mm,1,getdate()-day(getdate())+1))
+++
Access2000 使用SQL語句聯接表