我是mysql和DB概念的新手,被困在存储过程中。
我需要处理逻辑以从同一张表中获取,验证,处理数据并插入到另一张表中。
每行都有列名称,代码,开始时间(DD / int),持续时间(hrs / int),开始时间,开始时间等。
我的要求是写存储过程 有循环表记录的条件 条件1: 如果表A中的starttime不为null,则将其插入到表B中,其名称,代码,startTime(timestamp,根据starttime计算),endtime(timestamp,根据持续时间计算),startwith,startafter
条件2: 如果任何行具有startwith或startafter并且与先前插入的行中的代码匹配,则将其插入到tbl B中,并在先前插入的行结束时间之后保留第2行的开始时间
需要对每一行进行检查。 'startwith'和'startafter'可以以相同的'code'出现在多行中
条件: 只有“ starttime”,“ startwith”,“ startafter”列中的任何一个都不为空
'Name' 'code' 'starton' 'starttime','startwith','startafter' 'Duration'
ABC abc_efg 03 9 null null 10
nfg cpd_hnb null null null abc_efg 20
gfg dfd_hab null null abc_efg cpd_hnb 5
gdf ergd_hab 19 null cpd_hnb null 11
正在寻找数组方法,但在mysql中无法实现。 拒绝游标,因为它们有问题。 使用“临时表”并循环数据,但并没有真正获得预期的结果。也许我的查询不是真的正确 自我加入也没有成功。 我可以创建时间并进行验证,但无法获得预期的结果,但是会插入单行。
我想这样推 名称代码startdate endDate 'ABC','abc_efg','2010-03-03 09:00:00','2010-07-19 23:59:00'