SQL高手 - 工作中遇到的问题,齐探讨,绝对有意义

[复制链接]
查看11 | 回复4 | 2006-12-14 17:39:01 | 显示全部楼层 |阅读模式
1:内联是符合 t1.fid *=t2.fid 的条件的取出,找不到对应信息的不取 左联是先取出 T1表中所有信息,然后把T2中对应信息取出,为空就T2.SEX的位置就留空 速度上没研究....2:UNION会自动去重复 UNION ALL不会
回复

使用道具 举报

千问 | 2006-12-14 17:39:01 | 显示全部楼层
1.我喜欢写成第二种语句,我感觉速度上应该差不多2.UNION指定组合多个结果集并将其作为单个结果集返回。ALL在结果中包含所有的行,包括重复行。如果没有指定,则删除重复行。3.CREATE TABLE TestTran (Cola INT PRIMARY KEY, Colb CHAR(3))GOBEGIN TRANSACTION OuterTran -- @@TRANCOUNT set to 1.GOINSERT INTO TestTran VALUES (1, 'aaa')GOBEGIN TRANSACTION Inner1 -- @@TRANCOUNT set to 2.GOINSERT INTO TestTran VALUES (2, 'bbb')GOBEGIN TRANSACTION Inner2 -- @@TRANCOUNT set to 3.GOINSERT INTO TestTran VALUES (3, 'ccc')GOCOMMIT TRANSACTION Inner2 -- Decrements @@TRANCOUNT to 2.-- Nothing committed.GOCOMMIT TRANSACTION Inner1 -- Decrements @@TRANCOUNT to 1.-- Nothing committed.GOCOMMIT TRANSACTION OuterTran -- Decrements @@TRANCOUNT to 0.-- Commits outer transaction OuterTran.GO
回复

使用道具 举报

千问 | 2006-12-14 17:39:01 | 显示全部楼层
1 恩 当数据量大时 第一种好些就算一下两个表的迪卡尔积就能看出来了多表连接也是俩俩的连阿 2 Union(?Set1?, ?Set2?[, ALL])此函数返回 ?Set1? 和 ?Set2? 的 union 运算结果,并在默认情况下消除重复项。ALL 标志表示在并集中保留重复项。从尾部删除重复项。 3 下例在晚上 10:20 执行存储过程 update_all_stats。BEGIN WAITFOR TIME '22:20' EXECUTE update_all_statsEND
回复

使用道具 举报

千问 | 2006-12-14 17:39:01 | 显示全部楼层
1.第一种是左外部联接,返回 t1 中所有记录及 t2 中与 t1 t2.id 和 t1.id 相等的记录,第二种只是普通的条件查询,只返回两表中 t1.id 和 t2.id 相等的记录。应用范围不同,左外部联接速度未必就快,要看具体情况2.UNION 指定合并多个结果集并将其作为单个结果集返回,删除重复行UNION ALL 将全部行并入结果中,其中包括重复行3.看 MSDN补充:刚才没看到那个*号(ie7的模糊功能~~),*=的确是左外联的旧式写法,保留它只是兼容老的版本,不建议使用!不符合 SQL 92 规范
回复

使用道具 举报

千问 | 2006-12-14 17:39:01 | 显示全部楼层
我说一下多表LEFT JOIN...ONA LEFT JOIN B ON A.a=B.a LEFT JOIN C ON A.a=C.a...在后面接着写就可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行