我有一个有趣的查询,我想知道是否有人可以提供帮助?
基本上,我有三个表,Title,Attribute和Attribute_Value
标题包含一个模板列表,例如“在[类别}中由{用户}创建{日期}”,然后在属性表中,我有行包含用大括号括起来的参数的定义。
然后在attribute_value表中,我有值。
我遇到的问题是Query在查询完成之前似乎没有在每行上存储替换,这意味着该行只接收上一次更新,不完整。
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},但是当它替换{User}时,{Date}不是替换值,但仍然是{Date},与{Category}相同。但是当它完成时,
我是如何知道如何使用值更新Title列,同时保留以前替换的值?
干杯
GAV株系
答案 0 :(得分:1)
您可以编写一个stored procedure,使用cursor一次更新一个Title
中的属性。
答案 1 :(得分:0)
如果属性列表是静态的,我可能会使用子查询和嵌套的SQL REPLACE()。否则,编写自己的SQL函数来迭代所有可能的属性名称并进行替换。