㈠ sql数据对比和筛选
SQL思路:
先列转行;
关联出列名相同,值不同的数据;
将上面的数据,拼接后,行转字符串,写入到表A3;
例子:
--mssql:
INSERTINTOA3(T)
SELECTCOL=STUFF((SELECT','+colFROM(SELECTT.COL_NAME+','+T.COL_VALUE+','+T1.COL_VALUEASCOL
FROM(SELECTCOL_VALUE,COL_NAME
FROMA1UNPIVOT(COL_VALUEFORCOL_NAMEIN([A],[B],[C],[D],[E],[F]))ASF)T,
(SELECTCOL_VALUE,COL_NAME
FROMA2UNPIVOT(COL_VALUEFORCOL_NAMEIN([A],[B],[C],[D],[E],[F]))ASF)T1
WHERET.COL_NAME=T1.COL_NAMEAND
T.COL_VALUE!=T1.COL_VALUE)T2FORXMLPATH('')),1,1,'');
--oracle:
INSERTINTOA3(T)
SELECTLISTAGG(T.COL_NAME||','||T.COL_VALUE||','||T1.COL_VALUE,',')WITHINGROUP(ORDERBY1)
FROM(SELECT*
FROMA1UNPIVOT(COL_VALUEFORCOL_NAMEIN("A","B","C","D","E","F")))T,
(SELECT*
FROMA2UNPIVOT(COL_VALUEFORCOL_NAMEIN("A","B","C","D","E","F")))T1
WHERET.COL_NAME=T1.COL_NAMEAND
T.COL_VALUE!=T1.COL_VALUE
㈡ 我现在在开始自学mysql,主要是学sql语句,还要学图形界面他们什么区别
最好是学sql语句。mysql的语法比较严谨。很多东西mssql,oracle能用的mysql语法不支持。而且mysql的自主优化也不是很给力。很多东西需要靠自己来思考。至于图形界面,个人感觉没什么用。会一个常用的图形化工具做常用操作就行。
㈢ 如何用microsoft sql server managemeat studio进行数据对比
一、原来安装的有SQL 2000 和VS2005
这种情况需要下一个management 微软中国 上面下载SQL Server management studio expree版就行。安装了SQL2000的时候自带了使用计算机管理的SQL管理插件。你安装了微软的2005的话,你应该在安装组建中选择一个SQL Server management studio,可能你下载的是精简版本,一般正常下载的是一张光盘大小。解压1.4G。如果急需管理界面可以临时使用SQL 2000的管理界面连接进行管理。
二、SQLserver 2005里面没有SQL Server Management Studio
解决办法
分两种情况,一种是版本问题,一种是安装顺序问题,请往下看:
1、版本问题
你安装的是SQL Server 2005 Express Edition版,也就是我们说的快速开发版。SQL Server 2005 Express版是不用花钱的,微软免费让你用,但是它功能上少很多东西,不过对于学习、个人开发功能还是够用了。安装SQL Server 2005 Express Edition,在安装后会发现可以找得到SQL Server 2005的服务管理器,但是找不到它的数据库管理器,这是因为Express版本SQL本身没有带图形化管理工具。若需要这个工具的话,需要从微软上下载。
SQL Server 2005 使用的图形界面工具是 Microsoft SQL Server Management Studio Express,现在微软官方已提供它的正式版本下载。另外,微软还提供Microsoft SQL Server 2005 Express Edition 工具包下载,Microsoft SQL Server 2005 Express Edition 工具包包括Microsoft SQL Server Management Studio Express在里面。
你可以下载后安装,安装后在SQL Server 2005 程序组里就会出现Microsoft SQL Server Management Studio Express,使用它来进行管理即可。
(注:上面是简体中文版,你也可以选择其他语言的版本下载)
2、安装顺序问题
你可能会告诉我,说我装的不是Express版,可能你装的是Microsoft SQL Server 2005 Development Edition(也就是开发版),这个版本功能齐全,功能上和企业版一模一样,没有任何差异,只是授权上有所差异。为什么我一猜你用的就是Development版呢?不要惊奇,因为这个版是网上流传比较广的版本,大部分中国人都有着网上下载或者地摊儿买盗版光盘的这种习惯,什么软件都从网上下载,一个子儿不用花,地摊儿买也就5块钱,所以我猜得没错的话大部分人用的都是Development版。
如果你先安装了Microsoft Visual Studio 2005/2008,后安装的Microsoft SQL Server 2005 Development Edition,那么也会出安装后的SQLserver 2005里面没有SQL Server Management Studio,因为你在安装Visual Studio 2005/2008的时候他会自动给你装一个SQL server Express的实例,等你装SQL Server 2005 Development的时候检测安装兼容性的时候他会问你是否要进行版本变更,说你以前的版本是Express版,估计大多人也没有看,直接“下一步”了,所以安装以后其实你的版本是Express版,所以Microsoft SQL Server Management Studio Express自然就没有装上。你可以在安装以后查看你的“服务项”里面,会有SQL server Express版的服务。
解决办法:这种情况解决办法就是在控制面板里面,把以Microsoft SQL server 2005开头的程序(包括一些工具组件)全部卸载,然后重装就OK了!
㈣ 如何用SQL语句对比2个表的数据
select
base.name, base.year
, a.成绩 as [a表成绩]
, b.成绩 as [b表成绩]
, case
when a.成绩 is null then 'a表中不存在'
when b.成绩 is null then 'b表中不存在'
when a.成绩=b.成绩 then '成功'
else '差异' end as 比较结果
from (
select name, year from tb_a
union
select name, year from tb_b
) as base
left join tb_a as a on a.name=base.name and a.year=base.year
left join tb_b as b on b.name=base.name and b.year=base.year
㈤ SQL如何对2个表的数据进行对比
a表与b表通过哪个字段可以关联起来,关系是1对多还是多对多
select * from tablesA a
left join tablesB b on a.xx=b.xx
where a.xx1=b.xx1
类似这种
㈥ SQL中如何进行数据的比较
是完全匹配,还是部分匹配呢?
匹配"王"字
前面匹配,select * from [a] where 姓名 like '王%'
后面匹配,select * from [a] where 姓名 like '%王'
包含匹配,select * from [a] where 姓名 like '%王%'
完全相等,select * from [a] where 姓名 = '王'
㈦ SQL如何对比两张表的数据
insert
into
tablea
select
*
from
tablea
where
not
exists
(selelct
'1'
from
tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
and
tablea.driversize
=
driversize)
update
tablea
set
tablea.driversize
=
tablea.driversize
from
tablea
,tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
如果你以tableb为准的话,你最好在tableb上加个触发器
㈧ 如何用SQL对两个文件做比较
比较两个数据库,可以用工具,比如toad等,也可以自己写存储过程来实现,偶介绍一个用sql来核对表结构是否一致,以此类推,大家可以写出对比索引是否一致,对比约束是否一致的sql,该sql的缺点就是只能查出差异,却不知是那个表引起的:
select
case
when
a.cnt
=
b.cnt
then
'两个库结构一致'
when
a.cnt
<>
b.cnt
then
'两个库结构不一致'
end
from
(select
count(*)
as
cnt
from
dba_tab_columns
t1,
dba_tab_columns@lnk_db2
t2
where
t1.owner
=
'TAOBAO'
and
t1.owner
=
t2.owner
and
t1.table_name
=
t2.table_name
and
t1.column_name
=
t2.column_name
and
t1.data_type
=
t2.data_type
and
t1.data_length
=
t2.data_length
and
t1.nullable
=
t2.nullable
and
nvl(t1.data_precision,
0)
=
nvl(t2.data_precision,
0)
and
nvl(t1.data_scale,
0)
=
nvl(t2.data_scale,
0))
a,
(select
count(*)
as
cnt
from
dba_tab_columns
where
owner
=
'TAOBAO')
b
㈨ 有关Red Gate的SQL Compare数据库对比工具的问题
楼主你在 SQL Prompt 5==>Options中看看应该有地方可以设置