mysql复杂更新和替换

mysql复杂更新和替换,mysql,replace,inner-join,sql-update,Mysql,Replace,Inner Join,Sql Update,我有一个有趣的问题,不知是否有人能帮忙 基本上,我有三个表,标题、属性和属性值 Title包含一个模板列表,如“{Category}中的{User}在{Date}创建的”然后在属性表中,我有一些行,其中包含用花括号括起来的参数定义 然后在attribute_value表中,我有这些值 我遇到的问题是,在查询完成之前,查询似乎不会在每一行上存储replace,这意味着该行只接收最后一次更新,即未完成 update Title inner join Attribute_Value on Attrib

我有一个有趣的问题,不知是否有人能帮忙

基本上,我有三个表,标题、属性和属性值

Title包含一个模板列表,如“{Category}中的{User}在{Date}创建的”然后在属性表中,我有一些行,其中包含用花括号括起来的参数定义

然后在attribute_value表中,我有这些值

我遇到的问题是,在查询完成之前,查询似乎不会在每一行上存储replace,这意味着该行只接收最后一次更新,即未完成

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}相同。但是当它完成时,这个

关于如何用这些值更新标题列,同时保留以前替换的值,有什么想法吗

干杯


Gav

如果属性列表是静态的,我可能会使用子查询和嵌套的SQL REPLACE()。否则,编写您自己的SQL函数来迭代所有可能的属性名称并进行替换。

如果属性列表是静态的,我可能会使用子查询和嵌套的SQL REPLACE()。否则,,编写您自己的SQL函数来迭代所有可能的属性名称并进行替换。

您可以编写一个,使用a一次更新
标题中的一个属性。

您可以编写一个,使用a一次更新
标题中的一个属性。

您需要加入属性值一次对于模板中的每个值-在本例中为3次。每个连接将包含一个值。@Martin,属性名称/值和标题都是完全通用的。那几乎是不可能处理的。同意。我认为最简单的解决方案是在应用程序中进行替换:检索模板,提取属性列表,然后检索属性,最后执行替换。@Martin,用代码进行替换可能不是最好的选择。原因是(目前)标题中约有90k项,属性/属性值中约有150+k项。对于模板中的每个值,您需要加入属性值一次,在本例中为3次。每个连接将包含一个值。@Martin,属性名称/值和标题都是完全通用的。那几乎是不可能处理的。同意。我认为最简单的解决方案是在应用程序中进行替换:检索模板,提取属性列表,然后检索属性,最后执行替换。@Martin,用代码进行替换可能不是最好的选择。原因是(目前)标题中约有90k个项目,属性/属性值中约有150+k个项目。可能的话,尽管这需要花费很长时间才能运行:(似乎只有在整个查询完成时,行才会更新,而不是在行完成时更新。我不确定您的意思。我总是先选择正确的代码,然后再考虑性能。可能,尽管这需要花费很长时间才能运行:(行似乎只在整个查询完成时更新,而不是在行完成时更新。我不确定您的意思。我总是先选择正确的代码,然后再考虑性能。不幸的是,不是这样,标题和属性名称/值是完全通用的。不过,谢谢;)不幸的是,标题和属性名称/值是完全通用的。不过,谢谢;)