我想要一个查询来解决我在 native SQL 中的问题。
我有一个名为“synonym”的表,其中包含单词和单词的同义词。
id, word, synonym
1, abandon, forsaken
2, abandon, desolate
...
正如您所看到的,单词在此表中重复了很多次,这使得表变得不必要的大。我想要一个名为“words”的表,其中没有重复的单词,例如:
id, word, synonyms
1, abandon, 234|90
...
注意:这里的“234”和“90”是新建的words表中forsaken和desolate的id。
所以我已经创建了一个新的“单词”表,其中包含同义词表中单词字段中的唯一单词。我需要的是一个sql查询,它将查看每个单词同义词的同义词表,然后从单词表中找到它们的id,并用垂直线分隔的id更新“同义词”字段。然后我将删除同义词表。
就像:
UPDATE words SET synonyms= ( vertical line seperated id's (id's from words table) of the words at the synonyms at synonym table )
我知道我必须使用 group_concat 但我无法实现这一点。
希望这足够清楚。感谢您的帮助!
最佳答案
您提出的架构简直太糟糕了。
为什么不使用多对多
关系?
表词
id word
1 abandon
234 forsaken
表同义词
wid sid
1 234
1 90
关于mysql group_concat 将一张表连接到另一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750523/