当前位置: 首页 > 图文教程 > 数据库 > MSSQL > sql高级技巧几个有用的Sql语句

MSSQL
SQL Server导出表到EXCEL文件的存储过程
如何利用触发器实现两个数据库间的同步
SQL Server数据库连接查询的种类及其应用
SQL Server 2005中利用xml拆分字符串序列
Microsoft SQL Server数据库SA权限总结
用SQL语句生成带有小计合计的数据集脚本
深入剖析SQL Server的六种数据移动方法
为导入文件加上时间戳标记的两种方法
SQL Server与Oracle、DB2的优劣对比
带你深入了解SQL Server 2008的独到之处
通过视图修改数据时所应掌握的基本准则
SQL Server中如何优化磁带备份设备性能
教你轻松解决几种常见的SQL疑难问题
怎样取得局域网中所有SQL Server的实例
在系统崩溃的时候如何恢复原有的数据
获得当前数据库对象依赖关系的实用算法
SQL Server如何才能访问Sybase中的表
如何才能保护好我们的SQL Server数据库
从两个方面讲解SQL Server口令的脆弱性
SQL Server数据库日志清除的两个方法

MSSQL 中的 sql高级技巧几个有用的Sql语句


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 117 ::
收藏到网摘: n/a

sql语句对于数据的一些操作,根据另外一个表的内容修改第一个表的内容 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
8
3、例如:需要在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(数据源驱动名,数据源连接字符串)