程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> sql高級技巧幾個有用的Sql語句

sql高級技巧幾個有用的Sql語句

編輯:關於SqlServer
1、例如:有兩個表A(字段1,字段2,字段3)、B(字段2,字段3),其中存儲數據如下所示
表A
字段1 字段2 字段3 1 <Null> 地段內容1 1 <Null> 地段內容1 2 <Null> 地段內容2 2 <Null>

地段內容2

3 <Null> 地段內容3 4 <Null> 地段內容4 5 <Null> 地段內容5 5 <Null> 地段內容5 5 <Null> 地段內容5 6 <Null> 地段內容6 7 <Null> 地段內容7 8 <Null> 地段內容8 8 <Null> 地段內容8 8 <Null> 地段內容8 8 <Null> 地段內容8
表B
字段2 字段3 wdz1 地段內容1 wdz2 地段內容3 wdz3 地段內容5 wdz4 地段內容6 wdz5 地段內容7 wdz6 地段內容8
使用下面的Sql語句(可以達到將表A中字段3與表B中字段3相同的數據字段2填充到表A中的字段2)
update 表1 set 字段1 = (select 字段1 from 表2 where 表1.字段3=表2.字段3)
結果如下表所示
表A結果
字段1 字段2 字段3 1 wdz1 地段內容1 1 wdz1 地段內容1 2 <Null> 地段內容2 2 <Null>

地段內容2

3 wdz2 地段內容3 4 <Null> 地段內容4 5 wdz3 地段內容5 5 wdz3 地段內容5 5 wdz3 地段內容5 6 wdz4 地段內容6 7 wdz5 地段內容7 8 wdz6 地段內容8 8 wdz6 地段內容8 8 wdz6 地段內容8 8 wdz6 地段內容8
下面是本條Sql語句的網友意見
一、“江千帆”
update 表1 set 字段1 = (select 字段1 from 表2 where 表1.字段3=表2.字段3)
的效率很低,如果有X條記錄,會導致子查詢執行X次.
如果我們這樣寫,就可以充分利用索引(如果兩表在字段3上面都建立了索引),並且避免不必要的多次執行。
update 表1 set 表1.字段2 =表2.字段2 from 表1 inner join 表2 on 表1.字段3=表2.字段3

網友意見歸納結束。

2、例如:如第1點中的表A相同,需要查詢出表A的重復數據的Sql語句如下
select 字段1 from 表A group by 字段1 having count(字段3) > 1
查詢結果如下
表A查詢結果
字段1 1 2 5 83、例如:需要在Sql Server2000中查詢處某固定物理路徑的X1.dbf文件,使用的Sql語句如下(必須先安裝VF驅動才能使用此Sql語句)
select * from OpenDataSource('VFPOLEDB.1','User ID=;DSN=;Collating Sequence=MACHINE;Data Source=C:\dbfFiles\X1.dbf;Password=;Cache Authentication=False;Mask Password=False;Mode=Share Deny None;Extended Properties=;Encrypt Password=False')...X1
注:其他的非VF數據庫文件的查詢類似,只需要設置OpenDataSource中的參數即可。參數說明為OpenDataSource(數據源驅動名,數據源連接字符串)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved