MySQL,将单词分组并保存到另外两个表中

标签 mysql sql grouping

有三个表:

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/

相关文章:

mysql - : Change to Statisticsdata_Dynamic_Consolidation script

mysql - 在 mysql 中表示数组以进行检索的最快方法

php - 从行中选择最大的数字

MySQL语句想要查询WordPress数据库中相关的自定义帖子类型帖子

mysql - 忽略 GROUP BY 上的重复项

ios - Swift:按多个条件对嵌套数组进行分组 - 改进算法

mysql - 如何对两个不同表的两个不同列的数据求和?

sql - 我可以将这 2 个简单查询合并为一个查询吗?

Android获取联系人姓名和号码查询

php - 合并两个平面关联数组并对匹配键的值求和