一下遇到了2个问题

ysycysyc 2012-03-11 09:13:38
各位大虾,今天我遇到了两个问题,麻烦大家看一下。
1.
delete b1 insert into b1 select b2 from b2

select * from b1

上面的命令执行一次后,b2.b2导入了b1.b1,顺序也是一样的,可是紧接着再运行一次,b2.b2也导入了b1.b1,但是顺序变了,这是怎么回事呀.

2.
b3表有两个字段:bm,bn,其中bm的值为null,我想把b2.b2导入b3.bm,并且从第一行开始把null替换掉(表b2的记录行数和表b3的记录行数相同),我用

insert into b3 (bm) select b2 from b2

记录是导进去了,可是却是接着null导入的,没从bm的第一行开始替换null,如何才能实现呢?请大虾们帮帮忙,先谢谢!!
...全文
61 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
_0筱筱0_ 2012-03-11
  • 打赏
  • 举报
回复
第一个问题,不加排序的SELECT是乱序输出,会随着物理文件中行存放的顺序改变而改变,没有聚集索引的表输出顺序也不固定。想每次都一样,最简单的办法就是在b1上加聚集索引。
第二个问题
UPDATE T1 SET T1.BM=T2.B2
FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY GETDATE()) AS NUM FROM B3) T1
INNER JOIN (SELECT B2,ROW_NUMBER() OVER(ORDER BY GETDATE()) FROM B2) T2 ON T1.NUM=T2.NUM

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧