mysql数据库的简单增删改查,合并字段,拼接字符操作,用java完成将一张表中的查询结果合并存入另一张表的指定字段

首先问题描述:我现在有两个表,一个表是关键词,一个表是含有关键词的标签,需要做的就是在关键词表中新建一个标签字段,把包含该关键词的全部标签存入其中。比如关键词是Java,标签可能有Java开发,Java后台等。我这里关键词有4000个,标签有40000个,我用了小段java代码+sql的函数就完成了。

基本思想:对于给定的关键词,把包含关键词的标签筛选出来,然后存到一张表里,再把该表的结果一条条读出,存放到关键词表的字段里去。想法比较简单,涉及到一些sql操作可以了解一下。

步骤1:读取关键词和对应ID,(ID是更新时需要,也可以根据关键词更新):

String sql = "select keyword,id from 表名";
ResultSet queryResult = DBUtil.queryRDBdata(sql);
while (queryResult.next()) {
    String word = queryResult.getString("keyword");
    int id=queryResult.getInt("id");

}

步骤2:筛选出包含关键词(word变量)的标签存入表b,这是一个临时的表

String sql0 = "CREATE table b SELECT  concat_ws(':',label,count) from 表名 where label like \"%" + word + "%\"";

步骤3:将表b中的数据一条条读出,存放到变量label中

String sql1 = " select label from b ";
ResultSet queryResult = DBUtil.queryRDBdata(sql1);
while (queryResult.next()) {
   String  a = queryResult.getString("label");
   label=label+a+",";
}

本来在sql中有可以拼接字符串的函数,就是可以用sql函数把多条标签拼到一起,存入一个字段值中,就是使用concat函数,用法是concat(字段名,字符串),还可以按指定格式拼接concat_ws(“拼接符”,字段名,字符串),但是这个函数有长度限制,所以这里我是直接用的java的字符串拼接。

步骤4:将变量label存入到对应word的标签字段,我是根据ID来对应更新的

" UPDATE 表名 set label ='" + label + "'WHERE id ='" + id + "'";

完美over

猜你喜欢

转载自blog.csdn.net/Hedy5566/article/details/83620530