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

2016-02-19 10:44 55 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的sql高级技巧几个有用的Sql语句,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

1、例如:有两个表A(字段1,字段2,字段3)、B(字段2,字段3),其中存储数据如下所示
表A
字段1字段2字段31Null地段内容11Null地段内容12Null地段内容22Null

地段内容2

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)3Null地段内容34Null地段内容45Null地段内容55Null地段内容55Null地段内容56Null地段内容67Null地段内容78Null地段内容88Null地段内容88Null地段内容88Null地段内容8
表B
字段2字段3wdz1地段内容1wdz2地段内容3wdz3地段内容5wdz4地段内容6wdz5地段内容7wdz6地段内容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字段31wdz1地段内容11wdz1地段内容12Null地段内容22Null

地段内容2

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)3wdz2地段内容34Null地段内容45wdz3地段内容55wdz3地段内容55wdz3地段内容56wdz4地段内容67wdz5地段内容78wdz6地段内容88wdz6地段内容88wdz6地段内容88wdz6地段内容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查询结果
字段112583、例如:需要在Sql Server2000中查询处某固定物理路径的X1.dbf文件,使用的Sql语句如下(必须先安装VF驱动才能使用此Sql语句)
select * from OpenDataSource('VFPOLEDB.1','User ID=;DSN=;Collating Sequence=MACHINE;Data Source=C:dbfFilesX1.dbf;Password=;Cache Authentication=False;Mask Password=False;Mode=Share Deny None;Extended Properties=;Encrypt Password=False')...X1
注:其他的非VF数据库文件的查询类似,只需要设置OpenDataSource中的参数即可。参数说明为OpenDataSource(数据源驱动名,数据源连接字符串)

来源:https://www.tulaoshi.com/n/20160219/1595610.html

延伸阅读
id name 1 a 2 b 3 c 1 a 2 b 3 c 以下的sql语句都以上面表mytable为准: 1、查询id=1,3记录的所有数据 代码如下: select * from mytable where id in(1,3) 2、删除id重复的数据,表中数据只剩下id=1,2,3的所有数据 代码如下: select * into # from mytable truncate table mytable insert table select distinct * fro...
标签: SQLServer
说明:查询从第30条到第40条的记录数   SQL:select top 10 * from temp where id not in (select top 30 id from temp order by id asc) order by id asc   说明:复制表(只复制结构,源表名:a 新表名:b)    SQL: select * into b from a where 1<1     说明:拷贝表(拷贝数据,源表名:a...
1、 代码如下: select top 10 * from ( select top (@Page * 10) ROW_NUMBER() OVER (order by id) as RowNum, id, username from Guest where username = 'user' ) as T where RowNum ((@Page - 1) * 10) 2、 代码如下: select * from ( select ROW_NUMBER() OVER(order by id) as RowNum,id,username from Guest where user...
标签: SQLServer
说明:复制表(只复制结构,源表名:a 新表名:b) SQL: select * into b from a where 1<1 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) SQL: insert into b(a, b, c) select d,e,f from b; 说明:显示文章、提交人和最后回复时间 SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table wher...
1.调整内存 sp_configure 'show advanced options',1 GO RECONFIGURE Go sp_configure 'awe enabled', 1 GO RECONFIGURE Go sp_configure 'min server memory',1024 Go sp_configure 'max server memory',3072 GO RECONFIGURE Go PS: OS需要打开AWE 即在boot.ini里 添加 /3G 或者 /PAE (企业版)才能支持4G以上内存! 2.关...

经验教程

824

收藏

65
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部