有三个表:
products (relevant columns: id, name)
wordgroups (relevant columns: id, wordgroup)
productwordgroups (relevant columns: wordgroupid, productid)
现在我想将每个 products.name 分成 1-3 个词的词组,如下所示:
name = "A B C D E" =>
wordgroups = "A", "A B", "A B C", "B", "B C", "B C D", "C", "C D", "C D E", etc.
如果表中不存在这些词组,则必须将它们保存到 wordgroups.wordgroup。
最后,如果表中不存在表 products 和表 wordgroups 之间的多对多关系,则必须将其保存到 productwordgroups 中。
猜猜这可以通过一些讨厌的 SQL 查询来完成,但到目前为止我还没有能够欺骗 MySQL 来完成它。
谢谢。
最佳答案
我已经为您解决了问题的第二部分,即如果您提取所有字母以分隔给定名称的行。
提取需要在一个过程中完成。
我的代码,其中字母是输入表,字母是一列:
select * from letters
union all
select a.letter||' '||b.letter as letter from letters a,letters b
where a.letter<b.letter
union all
select a.letter||' '||b.letter||' '||c.letter as letter from letters a,letters b,letters c
where a.letter<b.letter and b.letter<c.letter
这是我的输入:
A
B
C
D
E
这是我的输出:
A
B
C
D
E
A B
A C
A D
A E
B C
B D
B E
C D
C E
D E
A B C
A B D
A B E
A C D
A C E
A D E
B C D
B C E
B D E
C D E
关于MySQL,将单词分组并保存到另外两个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39463180/