㈠ sql-SELECT語句中的子句都有哪些其作用
select * from 表名 最常用到 查詢表中所有數據。 其他的很麻煩 。 用一句話概括 如果你需要用到顯示數據的 。都要以select 開頭 然後接著 中間 就是要 查詢哪些內容 比如* 代表所有, 在接著 就是從哪張表查詢 如:from aa(表名)。如果需要判斷的 就加上where 條件。 比如where id==1
㈡ from 子句語法錯誤 !
先檢查程序
是否有誤,可以設置斷點逐行檢查,如果無誤;
則檢查sql語句,看資料庫名稱還有表的名稱還有欄位是否正確;
(注意,運行的時候不能打開資料庫)
在這里,我懷疑你用了非法的名稱。把user改一下,換成別的字元。比如說「users」或者「employee」等等。因為user可能是禁用名稱
㈢ 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語句聯接表
㈣ sql中表示查詢條件的子句有where和什麼
from:從哪些表中篩選
where:從表中篩選的條件
group by:分組依據
having:在統計結果中再次篩選
order by:排序
limit:分頁
having與where的區別在於,where是從表中篩選的條件,而having是統計結果中再次篩選。也就是說where後面不能加「分組/聚合函數」,而having後面則可以。
㈤ 簡述SELECT語句中的FROM、WHERE以及ORDER BY子句的作用。SQL Server
FROM用於在一個查詢中建立幾個關系之間的聯系,只需要在FROM子句中列出這幾個關系。FROM...WHERE...子句中,WHERE後面的條件稱為連接條件或連接謂詞,用來表示自然連接;
WHERE子句的功能類似於關系代數中的選擇運算;
ORDER BY 子句對輸出的結果進行排序,按升序排列(ASC)或降序排列(DESC)
資料庫對象有表,索引,視圖,圖表,預設值,規則,觸發器,語法,函數等。
㈥ sql連接查詢語句中from子句中表的順序有什麼要求
嚴格上來說是沒有要求的,他們有兩種寫法,一種是ANSI_SQL,一種是Trans_SQL.
ANSI-SQL:
select * from table1,table2,table3 where table1.ID=table2.ID and Table3.id = table2.PID
Trans-SQL:
select * from table1 join table2 on table1.ID = table2.ID join table3 on table2.PID = table3.ID
也就是說兩種寫法看一下連接條件是在from中還是直接寫在where條件中了!
嚴格意義上來說,連接順序可以隨便寫的。但是兩種還是有差別的。一般要求有順序,但這個順序不是強制要求——而是為了資料庫效率,也就是語句的性能上是有要求的!
在ANSI中,一般不作要求,因為資料庫會自動優化語句,在where中的條件,資料庫根據自己的規則和學習在執行時條件順序與你寫時的未必是一樣的。達到了自動優化的目的——但這種優化只是資料庫的自認為,他有可能優化後的語句反倒慢了,這時你需要關閉資料庫優化功能,讓他按你寫的順序執行。而在from中時資料庫不會自己優化,所以此時你應該注意順序。
不管哪一種情況,建議順序都是先生成連接條件結果較少的,也就是說在語句執行結果集時,結果集盡量的小,不要大,所以對於連接時兩個小數據表先連接,然後再是大表連接。但這個順序只是建議——嚴格上卻沒有任何要求。
㈦ SQL中SELECT中的FROM子句可否帶另外一個SELECT
可以
SQL中SELECT嵌套
SELECT語句
是很常見的
SQL語句
,嵌套SELECT語句也叫
子查詢
,一個SELECT
語句的查詢結果能夠作為另一個語句的輸入值。子查詢不但能夠出現在Where子句中,也能夠出現在from子句中,作為一個
臨時表
使用,也能夠出現在select
list中,作為一個欄位值來返回。
例1:select子查詢出現在Where子句中
select
ename,deptno,sal
from
emp
where
deptno=(select
deptno
from
dept
where
loc='NEW
YORK');
例2:select子查詢出現在from子句中
SELECT
ename,job,sal,rownum
FROM
(SELECT
ename,job,sal
FROM
EMP
ORDER
BY
sal);
例3:select子查詢出現在select
list中,作為一個欄位值來返回
SELECT
ename,job,sal
FROM
EMP
WHERE
deptno
in
(
SELECT
deptno
FROM
dept
WHERE
dname
LIKE
'A%');
(7)關於sqlfrom裡面的子句擴展閱讀
在select子句里能支持直接嵌套一個select子查詢,但是該select子查詢返回的
結果集
必須是單行,返回多
行時
會提示ORA-01427:
single-row
subquery
returns
more
than
one
row(ORA-01427:
單行子查詢返回多個行
):
select
(
SELECT
id
from
data_
dictionary
where
id=1)
From
v_photosum_attach
;
select
(
SELECT
id
from
data_dictionary
where
id=lock_purpost)
From
v_photosum_attach
;
注釋:lock_purpost是表v_photosum_attach里的一列的列名。
參考資料來源:
搜狗網路
-子查詢
㈧ sql語句中from子句列表中的多個表
你的程序看起來是對的,如果報告語法錯誤,可能是你丟了空格,例如第二段應該如下:
SQL.Add('select b.會員號,會員名,上期費用余額,本次交費,本期費用余額,交費時間,說明,經辦人');
SQL.Add(' from 會員表 b,會員會費歷史庫 x');
SQL.Add(' where b.會員名=x.會員名');
注意,第二次開始的Add前面都加上一個空格,否則from和經辦人連接在一起。
㈨ 求高手 急用 SQL語句中FROM子句列表中的多個表 的錯誤
首先你要判斷學號,姓名,課程名稱,成績 在你要引用的幾個表中是只出現一次,例如學號在學生基本信息表,其他兩個表沒有這個欄位,否則你要在前面加上表名。此外在引用表時還可以加個簡寫,好像" 學生基本信息 (as) user " 這樣增強可讀性。下面做個示範:
"select user.學號,user.姓名,project.課程名稱,score.成績 from 學生基本信息 user ,課程基本信息 project,學習成績 score where user.學號=project.學號";
㈩ MySQL的子查詢中FROM和EXISTS子句的使用教程
FROM
子查詢
FROM
子句中的子查詢
MySQL
FROM
子查詢是指
FROM
的子句作為子查詢語句,主查詢再到子查詢結果中獲取需要的數據。FROM
子查詢語法如下:
SELECT
...
FROM
(subquery)
AS
name
...
子查詢會生成一個臨時表,由於
FROM
子句中的每個表必須有一個名稱,因此
AS
name
是必須的。FROM
子查詢也稱為衍生數據表子查詢。
FROM
子查詢實例
table1:
s1
s2
1
5
2
12
3
20
FROM
子查詢
SQL
如下:
SELECT
s1,s2
FROM
(SELECT
s1,
s2*2
AS
s2
FROM
table1)
AS
temp
WHERE
s1
>
1
查詢返回結果如下所示:
s1
s2
2
24
3
40
提示
MySQL
FROM
子句中的子查詢可以返回標量、列、行或表,但不能為有關聯的子查詢。
MySQL
子查詢
EXISTS
和
NOT
EXISTS
MySQL
EXISTS
和
NOT
EXISTS
子查詢
MySQL
EXISTS
和
NOT
EXISTS
子查詢語法如下:
SELECT
...
FROM
table
WHERE
EXISTS
(subquery)
該語法可以理解為:將主查詢的數據,放到子查詢中做條件驗證,根據驗證結果(TRUE
或
FALSE)來決定主查詢的數據結果是否得以保留。
MySQL
EXISTS
子查詢實例
下面以實際的例子來理解
EXISTS
子查詢。下面是原始的數據表:
article
文章表:
user
用戶表:
我們要查出
article
表中的數據,但要求
uid
必須在
user
表中存在。SQL
語句如下:
SELECT
*
FROM
article
WHERE
EXISTS
(SELECT
*
FROM
user
WHERE
article.uid
=
user.uid)
返回查詢結果如下:
從語句執行結果可以看出,article
表中第
4
條記錄沒有被保留,原因就是該條記錄的數據在子查詢中返回的結果是
FALSE
。
當上面的
SQL
使用
NOT
EXISTS
時,查詢的結果就是
article
表中
uid
不存在於
user
表中的數據記錄。
提示
EXISTS
(subquery)
只返回
TRUE
或
FALSE,因此子查詢中的
SELECT
*
也可以是
SELECT
1
或其他,官方說法是實際執行時會忽略
SELECT
清單,因此沒有區別。
EXISTS
子查詢的實際執行過程可能經過了優化而不是我們理解上的逐條對比,如果擔憂效率問題,可進行實際檢驗以確定是否有效率問題。
EXISTS
子查詢往往也可以用條件表達式、其他子查詢或者
JOIN
來替代,何種最優需要具體問題具體分析。