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条)

报告相同问题?

悬赏问题

  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。