我有3张桌子。
表格标签
id tag_name tag
1 date [0-9]+([\.:;\-\/ ]?(ЪЬЪЬ)?[0-9]+[\.:;\-\/ ]?(ЪЬЪЬ)?)+
2 text (.*)
表格消息
id group_number msg id_template
1 2 some text 25.06.2016 some more text 0
表格模板
id group_number tag_text
1 2 some{text} {date} {text}
其中{text}可以替换msg中的任何文本,{date}可以替换msg中的任何日期。
在这种情况下,id为1的消息跟随id为1的模板,但有许多消息和模板。
因此,对于template.tag_text之后的每个message.msg,我想在message.id_template template.id中插入。
在sql中它应该看起来有点像
update message
set message.id_template = template.id
where message.msg like 'template.tag_text'
但我不知道如何处理{date}和{text},因为这个
some text 25.06.2016 some more text
和这个
some{text} {date} some more {text}
会被视为不同。
是否可以只使用sql?
答案 0 :(得分:0)
您需要join
并使用正确的比较运算符:
update message m join
template t
on m.msg regexp t.tag_text
set m.id_template = t.id;
注意:这将很慢(因为它必须进行嵌套循环连接)。此外,如果多个模板匹配,则可以任意选择一个模板。