怪问题

QQ503503 2005-07-21 06:25:25
我想在两个表之间进行操作,将B表中与A表时间匹配的数据插入到A表中,我使用了insert语句,但是结果不太正确,望高手指教!代码如下:
insert into his_fwd(exch, rout, price)
select 'aaa',bbb',C4.Apr05 from C4,his_fwd
where C4.Date = his_fwd.date
C4中的数据总共43条,但是我用
select * from C4,his_fwd where C4.date = his_fwd.date
结果检索出了700多条,搞不懂怎么回事??
...全文
136 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
brother2605 2005-07-22
  • 打赏
  • 举报
回复
晕。
问一下,C4中的数据与his_fwd的数据有何区别?
是不是这样:C4和his_fwd中只要日期相同的数据都一样。
如果这样那就没关系,无论结果是多少条都不会影响。因为
你是根据C4的下数据更新his_fwd的数据,如果可能日期不能重复的话那就
说明his_fwd中有数据冗余。
不知道我理解的对不对。
QQ503503 2005-07-22
  • 打赏
  • 举报
回复
我自己解决了,谢谢各位了!!3ks
QQ503503 2005-07-22
  • 打赏
  • 举报
回复
可以运行,但没有update
brother2605 2005-07-22
  • 打赏
  • 举报
回复
错了,用下面的。
update his_fwd
set exch='aaa',price=C4.Apr05
from his_fwd inner join C4 on C4.Date = his_fwd.date and his_fwd.rout='bbb'

brother2605 2005-07-22
  • 打赏
  • 举报
回复
update his_fwd
set exch='aaa',price=C4.Apr05
from his_fwd inner join C4 on C4.Date = his_fwd.date and C4.rout='bbb'
那就这样再试试。
QQ503503 2005-07-22
  • 打赏
  • 举报
回复
C4存放的是rout值为‘bbb’的数据和时间,而his_fwd中没有rout为‘bbb’的数据,但有rout值为其它的数据和时间。所以说,在his_fwd中rout为‘bbb’的时间是有了,但是rout为‘bbb’的数据没有。现在就是要将与时间对应的数据补充进去,但是不能重复日期。
QQ503503 2005-07-21
  • 打赏
  • 举报
回复
我用select试了一下,代码如下:
select * from his_fwd inner join C4 on C4.date = his_fwd.date where price = 0 or his_fwd.price is null
结果是什么都没有
(0 row(s) affected)
price是float型的
brother2605 2005-07-21
  • 打赏
  • 举报
回复
price是什么类型的?有没有默认值。我想判断它没数据是什么格式的,上面的只能针对字符型。
如果是数字型那就得改了:
update his_fwd(exch, rout, price)
set exch='',rout='',price=C4.Apr05
from his_fwd inner join C4 on C4.Date = his_fwd.date
where his_fwd.price=0 or
his_fwd.price is null
上面那个错了,不好意思。试试这个
QQ503503 2005-07-21
  • 打赏
  • 举报
回复
两个表能够匹配的就只有时间
brother2605 2005-07-21
  • 打赏
  • 举报
回复
给点数据出来看看
QQ503503 2005-07-21
  • 打赏
  • 举报
回复
不行
撸大湿 2005-07-21
  • 打赏
  • 举报
回复
select * from C4 left join his_fwd on C4.date = his_fwd.date
QQ503503 2005-07-21
  • 打赏
  • 举报
回复
brother2605(幽灵),还是不行
brother2605 2005-07-21
  • 打赏
  • 举报
回复
上面之所以会有700多是因为两表满足 C4.Date = his_fwd.date
条件的还包括his_fwd在这个时间里有数据的信息啊
brother2605 2005-07-21
  • 打赏
  • 举报
回复
可以这样:
update his_fwd(exch, rout, price)
set exch='',rout='',price=C4.Apr05
from his_fwd inner join C4 on C4.Date = his_fwd.date
where his_fwd.price<>''and his_fwd.price is not null
brother2605 2005-07-21
  • 打赏
  • 举报
回复
如果时间不能重复,根据你的条件那么你将his_fwd.price根据C4中的时间只Update
his_fwd.price为空的就可以了啊
QQ503503 2005-07-21
  • 打赏
  • 举报
回复
brother2605(幽灵),不行啊!还是700多条
QQ503503 2005-07-21
  • 打赏
  • 举报
回复
现在的问题是在his_fwd中有日期,但是一部分时间没数据,在C4中有和这些日期匹配的数据,我现在想把C4中的数据根据时间加到his_fwd表中,但时间不重复。
rivery 2005-07-21
  • 打赏
  • 举报
回复
你需要吧问题描述清楚了,别人才能帮你看看啊。
你像插入需要的数据,必须通过合适的筛选。
显然你当前的筛选C4.Date = his_fwd.date是无法满足的。
brother2605 2005-07-21
  • 打赏
  • 举报
回复
insert into his_fwd(exch, rout, price)
select 'aaa',bbb',C4.Apr05 from C4 inner join his_fwd
on C4.Date = his_fwd.date order by C4.Apr05

这样试试看行不行。
加载更多回复(3)

34,872

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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