问题一.
表达式1:select a.*,b.* from a inner join b on a.id=b.id
表达式2:select a.*,b.* from a,b where a.id=b.id
两个表达式哪个效率高?
问题二.
以上两个表达式查询后的结果会出现如下情况:
a.name b.name
------------------
name 2 names 2
name1 2 names 2 '这行的names 2 并不存在数据!如果不想使用默认上行的数据应该如何解决?
多谢!
表达式1:select a.*,b.* from a inner join b on a.id=b.id
表达式2:select a.*,b.* from a,b where a.id=b.id
两个表达式哪个效率高?
问题二.
以上两个表达式查询后的结果会出现如下情况:
a.name b.name
------------------
name 2 names 2
name1 2 names 2 '这行的names 2 并不存在数据!如果不想使用默认上行的数据应该如何解决?
多谢!
恶意用 isnull(字段,要替换的值)来替换出现null的值
可以用gruoping 了解是不是系统生成的null
可结果并没有什么改变?
id name
1 cc1
2 cc2
3 cc3
3 cc4
--------
b表
id name
1 cc11
2 cc22
3 cc33
表达式1:select a.*,b.* from a inner join b on a.id=b.id
结果:
1 cc1 1 cc11
2 cc2 2 cc22
3 cc3 3 cc33
3 cc4 3 cc33 '问题就是这个cc33在表b并没有存在!如何才能将其显示成null或其他自定义的值?
select a.*,b.* from a,b where a.id=b.id 等同于
select a.*,b.* from a cross join b where a.id=b.id
但因为有限制条件所以相当于内连接,速度和第一句几乎没有差别
至于cyc308() 的需求比较特别,按照你的意思,你想要的连接条件根本不是a.id=b.id
a.id=b.id就是得出那个结果
你想要得是a.rowid=b.rowid,很可惜SQLServer2000没有rowid的用法