sql高级技巧几个有用的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 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(数据源驱动名,数据源连接字符串)

时间: 2024-09-29 08:30:36

sql高级技巧几个有用的Sql语句的相关文章

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

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 <

有用的SQL语句(删除重复记录,收缩日志)

删除重复记录,将TABLE_NAME中的不重复记录保存到#TABLE_NAME中 select distinct * into #table_name from table_name delete from table_name select * into table_name from #table_name drop table #table_name 与此相关的是"select into"选项,可以在数据库属性 对话框中,勾起来此项,或者在Query Analyzer中执行 ex

有用的SQL语句(删除重复记录,收缩日志)_MsSql

删除重复记录,将TABLE_NAME中的不重复记录保存到#TABLE_NAME中 select distinct * into #table_name from table_name delete from table_name select * into table_name from #table_name drop table #table_name 与此相关的是"select into"选项,可以在数据库属性 对话框中,勾起来此项,或者在Query Analyzer中执行 ex

有用的SQL Server语句和存储过程

server|存储过程|语句 SQL  Server语句和存储过程   -- ====================================================== --列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息 --在查询分析器里运行即可,可以生成一个表,导出到EXCEL中 -- ====================================================== SELECT        (case when a

简单有用的SQL脚本 (行列互转,查询一个表内相同纪录等)_mssql2005

行列互转 复制代码 代码如下: create table test(id int,name varchar(20),quarter int,profile int) insert into test values(1,'a',1,1000) insert into test values(1,'a',2,2000) insert into test values(1,'a',3,4000) insert into test values(1,'a',4,5000) insert into tes

Oracle学习(八) PL/SQL简介,基本程序结构和语句

1.变量 2.常量 3.基本程序结构和语句 PL/SQL能够驻留在Oracle数据库服务器和Oracle开发工具两个环境中.在这两个环境中,PL/SQL引擎 接受任何PL/SQL块和子程序作为输入,引擎执行过程语句将SQL语句发送给Oracle服务器的SQL语句执行 器执行. 1.PL/SQL变量 (1)变量的声明: 变量通常是在PL/SQL块的声明部分定义的,每一个变量都有一个特定的类型. 变量定义的基本格式为: <变量名> <数据类型>[(宽度):=<初始值>] 如

sqlserver-关于SQL SERVER如何获取执行过的语句

问题描述 关于SQL SERVER如何获取执行过的语句 我知道sqldiag和sql server profiler好像是可以获取SQL SERVER执行过的语句的,版本为2005,但是前者在试验时,未能在相关trc文件获取历史语句,后者倒是能在监视器获取到,但由于鄙人是单独下载的,有点问题,不能保存结果到表或者文件(蛋疼),但是profiler不知道是不是可以自动生成可分析的trc文件?或者能自动保存啥的?小弟需要隔一段时间自动进行一次规则过滤分析,所以不能采用手动保存.坐等专家解答..十万火

Sql server 数据库中,纯SQL语句查询、执行 单引号问题。

原文:Sql server 数据库中,纯SQL语句查询.执行 单引号问题. 在默认值情况下, select 'abc',Titile from tb_Name;  ---输出内容 是abc: 如果想输出 单引号 'abc,需要使用select '''abc',Titile from tb_Name; ---这里用三个单引号'''abc: select '''abc''',Title from tbName;   输出内容是'abc':两边带有单引号: 谨记:如果字符串包含单引号,则需要在单引号前

为什么ASP中执行动态SQL总报错误信息?提示语句语法错误_数据库相关

问:为什么ASP中执行动态SQL总报错误信息?提示语句语法错误 答: 有时候写ASP用conn.execute(sql)查询.更新.插入Access数据库数据时,明明正确的语句却往往会显示sql语句错误,相当恼火,特进行了归纳,可适当为字段添加"["."]"解决: 复制代码 代码如下: 例1:select * from a  如出现错误,可改为:select * from [a]  例2:UPDATE [user] SET password = '"&am