xzb_97 2009-08-31 14:40
浏览 253
已采纳

请教一个插入的sql语句!

task表中现有数据:
pid id parentid name start finish
2000 5743 0 2000年数据1 2009-8-27 2009-8-27

2000 5744 5743 2000年数据2 2009-8-27 2009-8-29

sequence表中:
type 2744

当我需要插入这样的新数据时(比如是2009年8月28号插入的):
子件号 父件号 周期
2001年数据1 1天
2001年数据2 2001年数据1 4天

该怎么实现才能插入上面的新数据后task表中的数据如下:

pid id parentid name start finish
2000 5743 0 2000年数据1 2009-8-27 2009-8-27

2000 5744 5743 2000年数据2 2009-8-27 2009-8-27
2001 5745 0 2001年数据1 2009-8-28 2009-8-29
2001 5746 5745 2001年数据2 2009-8-28 2009-9-1

2001的id号是取sequence表type+1,然后将后面的数据id值依次变成新值,请教!
[b]问题补充:[/b]
谢谢关注,三个回复:
1. 我用的数据库是sqlserver2000
2. 数据库中与start和finish的类型是日期型(也就是date).
3.数据是从数据库里另一个表获得的。
[b]问题补充:[/b]
请教各位高手!
[b]问题补充:[/b]
可是id和parentid怎么写sql语句才能实现呢?
[b]问题补充:[/b]
十分感谢你的回复,有个问题请教一下:我将id+1后,这时候要改变parentuid的值,是根据什么条件呢? update parentuid=id from task where name='2001年数据1' 可我是一万条数据的插入?会不会在效率上太差了?
[b]问题补充:[/b]
谢谢你提供的思路,那如果我一次插入一万条数据,在task上建立name的索引,能达到比较好的效率吗?

  • 写回答

5条回答 默认 最新

  • walsh_bupt 2009-09-01 18:56
    关注

    我将id+1后,这时候要改变parentuid的值,是根据什么条件呢?

    你先从下面这个表中读取一行数据吧:
    [quote]子件号 父件号 周期
    2001年数据1 1天
    2001年数据2 2001年数据1 4天 [/quote]

    假如读取的就是第一行数据,通过第一行数据的父件号为空,可知该行数据没有父件号,那么在你插入的时候,parentuid就是0了;

    然后读取第二行数据吧,第二行数据的父件号是“2001年数据1 ”,那你就可以用该值去你要插入的那个表中查找name等于“2001年数据1”的哪行记录呀,返回该行记录的id,这个id即为你要插入的这行数据的parentid ;

    对于你说的效率,你可以优化你的SQL语句,或者在task上建立name的索引。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题