--从简单的来4. insert into tb2 select 10条数据 from tb1 delete 10条数据 from tb15. 左连接最大8,最小3 内链接最大3,最小01. 不大清楚 估计select ... into ... from ...会快一点2. select 去重后的数据 into tb2 from tb13. 我的算法...我只代表我自己
其它的太复杂,纠正一个简单的。A表3条记录,B表5条记录
内连接最大数: select * from a inner join b on 1=1 等于15条 内连接最小数: select * from a inner join b on 1<>1 等于0条左连接最大数:select * from a left join b on 1=1 等于15条 左连接最小数:为驱动表行数,当A为驱动表,为3条,当B为驱动表 为5条所有的连接第一步都是cross join ,第二步 内连接 (筛选ON条件),第三步 外连接 处理没有适配的数据。
1.没试过了,应该符合日志记录最小化的原则。 2.distint 3.既然是完全重复行, with dups as (slect *,ROW_NUMBER() OVER (partition by col1 order by col2 ) AS rn From dbo.myTB) while 1=1 Begin Delete top (5000) from dups where rn>1 if @@RowCount<5000 break; End 4.Delete From dbo.yourTB OUTPUT deleted.* INTO dbo.anotherTB Where codition='只删10行' 5.Left:15,3 Inner:15,0
insert into tb2
select 10条数据 from tb1
delete 10条数据 from tb15.
左连接最大8,最小3
内链接最大3,最小01.
不大清楚
估计select ... into ... from ...会快一点2.
select 去重后的数据 into tb2 from tb13.
我的算法...我只代表我自己
内连接最大数: select * from a inner join b on 1=1 等于15条
内连接最小数: select * from a inner join b on 1<>1 等于0条左连接最大数:select * from a left join b on 1=1 等于15条
左连接最小数:为驱动表行数,当A为驱动表,为3条,当B为驱动表 为5条所有的连接第一步都是cross join ,第二步 内连接 (筛选ON条件),第三步 外连接 处理没有适配的数据。
这个貌似不对吧,以合并联接策略为例:先根据连接关键字排序,再从上到下逐条比较,匹配的行合并到结果集,不匹配的行则去除,这跟cross join不同吧。
A左连接B最大15,最小3,A内连接B最大15,最小0
1.没试过了,应该符合日志记录最小化的原则。
2.distint
3.既然是完全重复行,
with dups as
(slect *,ROW_NUMBER() OVER (partition by col1 order by col2 ) AS rn From dbo.myTB)
while 1=1
Begin
Delete top (5000) from dups where rn>1
if @@RowCount<5000 break;
End
4.Delete From dbo.yourTB
OUTPUT deleted.* INTO dbo.anotherTB
Where codition='只删10行'
5.Left:15,3 Inner:15,0
这种问题类似于面试问题,主要考察应聘者考虑问题是否周全,经验是否丰富,比如问题4:
“4. 从一张表删除10条记录,同时把这10条记录插入另外一张表中,该怎么做。
”做法很多,甚至可以用一条语句完成,但是不同场合,需要不同方法,只当了解,无需在意。