mysql group_concat 将一张表连接到另一张表

标签 mysql sql

我想要一个查询来解决我在 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/

相关文章:

MySQL向字段添加文本

mysql .net - 如何使用 .net 连接器更改 mysql 中的 SQL 模式

php - PDO 为 mysql_num_rows 准备了等效语句

php - sql like 从三列查询全名

mysql - SQL:未知列 'items.id'关系查询

sql - 根据列数据生成序列号

MySql - 如何在选择和分组依据中使用表达式

php - 如何强制 MySQL 返回有限的行?

sql - 在SQL Server中并行执行3条SQL语句

mysql - 优化我的 MySQL 查询