SQLSERVER外连接符
表A
tmpA:
id name
00 名字A
01 名字B
02 名字C
03 名字D
04 名字E
tmpB:
id class
02 班级A
06 班级B
在Microsft SQL SERVER Management Studio 中执行这个语句 select tmpA.id, tmpB.class from tmpA,tmpB where tmpB.id=*tmpA.id;就会报这个错【消息 4147,级别 15,状态 1,第 2 行
此查询使用的不是 ANSI 外部联接运算符("*=" 或 "=*")。若要不进行修改即运行此查询,请使用存储过程 sp_dbcmptlevel 将当前数据库的兼容级别设置为 80 或更低。极力建议使用 ANSI 外部联接运算符(LEFT OUTER JOIN、RIGHT OUTER JOIN)重写此查询。在将来的 SQL Server 版本中,即使在向后兼容模式下,也不支持非 ANSI 联接运算符。】
而从java里调用执行,就可以正常执行。 '不明白为什么?'
<SQLSERVER外连接符为'*',而ORACLE为'+'>
select tmpA.id, tmpB.class from tmpA,tmpB where tmpB.id=*tmpA.id;
语句等价于 select tmpA.id, tmpB.class from tmpA LEFT JOIN tmpB on tmpB.id=tmpA.id
输出结果:
id class
00 NULL
01 NULL
02 班级A
03 NULL
04 NULL
//////////////
select tmpA.id, tmpB.class from tmpA RIGHT JOIN tmpB on tmpB.id=tmpA.id
输出结果:
id class
02 班级A
NULL 班级B
//////////////
select tmpA.id, tmpB.class from tmpA FULL JOIN tmpB on tmpB.id=tmpA.id
输出结果:
id class
00 NULL
01 NULL
02 班级A
03 NULL
04 NULL
NULL 班级B
相关文档:
sqlserver附加数据库错误823的解决方案2008-10-13 15:06sqlserver附加数据库错误823的解决方案一、SQL-Server附加数据库时失败。
1、异常情况:服务器在正常运行的情况下突然断电,导致数据库文件损坏,具体表现是:数据库名后面有“(置疑)”字样。
2、异常分析:关于823错误的 SQL-SERVER 中的帮助:
=== ......
前阵遇到 本地sqlserver2005跨库查询
结果首先报错的是 无法 处理不同的排序规则
在修改排序规则的过程中,又出现了,“无法用排他锁锁定该数据库,以执行该操作。”这样的错误。
经查资料发现,修改数据库为单用户访问,可以锁定数据库。
alter database yourdatabase set single_user with rollback ......
在临时表
create table #T (…)
和表变量
declare @T table (…)
之间主要有3个理论上的不同。
第一个不同使事务日志不会记录表变量。因此,它们脱离了事务机制的范围,从下面的例子可显而易见:
create table #T (s varchar(128))
declare @T table (s varchar(128))
insert into #T select 'old va ......
索引的重要性
数据库性能优化中索引绝对是一个重量级的因素,可以说,索引使用不当,其它优化措施将毫无意义。
聚簇索引(Clustered Index)和非聚簇索引 (Non- Clustered Index)
最通俗的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的索引顺序与数据物理排列顺序无关。举例来说,你翻到� ......