数据库列合并:如何合并词典库中同单词的多条释义
合并词典数据库中同一单词的释义
嘿,这个合并同词释义的需求很典型,用SQL就能完美解决!根据你使用的数据库类型,我整理了几种常用的实现方案,你可以直接套用:
方案1:MySQL(5.7及以上版本)
MySQL自带的GROUP_CONCAT函数可以轻松聚合字符串,配合窗口函数生成新的连续ID:
SELECT ROW_NUMBER() OVER (ORDER BY word) AS new_id, word, GROUP_CONCAT(meaning SEPARATOR ',') AS combined_meanings FROM your_dictionary_table GROUP BY word ORDER BY new_id;
ROW_NUMBER() OVER (ORDER BY word):按单词排序生成新的连续IDGROUP_CONCAT(meaning SEPARATOR ','):把同一单词的所有释义用逗号拼接起来- 记得把
your_dictionary_table替换成你实际的表名
方案2:PostgreSQL
PostgreSQL使用STRING_AGG来做字符串聚合,还能指定释义的拼接顺序:
SELECT ROW_NUMBER() OVER (ORDER BY word) AS new_id, word, STRING_AGG(meaning, ',' ORDER BY meaning) AS combined_meanings FROM your_dictionary_table GROUP BY word ORDER BY new_id;
这里ORDER BY meaning可以让释义按一定顺序拼接,如果你不需要排序可以去掉这部分。
方案3:SQLite
SQLite同样支持GROUP_CONCAT函数,写法和MySQL类似:
SELECT ROW_NUMBER() OVER (ORDER BY word) AS new_id, word, GROUP_CONCAT(meaning, ',') AS combined_meanings FROM your_dictionary_table GROUP BY word ORDER BY new_id;
兼容老版本数据库(比如MySQL 5.6及以下)
如果你的数据库不支持窗口函数,可以用变量来生成新ID:
SET @row_num = 0; SELECT (@row_num := @row_num + 1) AS new_id, word, GROUP_CONCAT(meaning SEPARATOR ',') AS combined_meanings FROM your_dictionary_table GROUP BY word ORDER BY new_id;
运行以上SQL后,就能得到你想要的格式:同一单词的所有释义合并成一行,并且生成新的连续ID。
内容的提问来源于stack exchange,提问作者Sadraddin Roohani
相关产品推荐
相关产品推荐

