我有一个有趣的查询,我想知道是否有人可以帮忙?mysql复杂更新和替换
基本上,我有三个表,标题,属性和ATTRIBUTE_VALUE
标题包含了像“由{用户}在{类别}创建于{日期}”然后在属性表,我有模板列表包含大括号内包含参数定义的行。
然后在attribute_value表中,我有值。
我遇到的问题是,查询似乎没有存储每行的替换,直到查询完成,这意味着行只接收最后一次更新,不完整。
update Title inner join Attribute_Value on Attribute_Value.GenericID = Title.CollectibleID and Attribute_Value.GenericType = 'collectible' inner join Attribute on Attribute.AttributeID = Attribute_Value.AttributeID set Title.Title = replace(Title.Title, concat('{', Attribute.Name, '}'), Attribute_Value.Value)
所以基本上,它会取代{}日期正确,但是当它去取代{用户},{DATE}不是替代价值,但仍然{}日期与{}类相同。但是当它完成时,我想知道如何使用值更新Title列,同时保持以前替换的值吗?
干杯
GAV株系
您需要为模板中的每个值加入一次Attribute_value - 在此情况下为3次。每个加入都会覆盖一个值。 – Martin 2010-10-10 21:08:34
@Martin,属性名称/值和标题都是完全通用的。那几乎不可能处理。 – Gavin 2010-10-10 21:34:51
同意。我认为最简单的解决方案是在应用程序中进行替换:检索模板,提取属性列表,然后检索属性,最后执行替换。 – Martin 2010-10-11 06:20:54