如图,2个表 之间 关键词字段,匹配查询,然后把栏目id写入到表2

解决方案 »

  1.   

    update table2 a 
    set lmid=(
    select group_concat(sy_kbj) from table1 
    where concat(',',a.sy_key,',') regexp
        concat(',(',replace(sy_kbj,',','|'),'),')
    )
      

  2.   

    http://blog.csdn.net/acmain_chm/article/details/4141864
    REGEXP 正则的实现两个字符串组的匹配。
    最近MySQL版块中类似问题出现得比较多。总结了一下。 由于某些原因,有时候我们没有按照范式的设计准则而把一些属性放到同一个字符串字段中。比如个人兴趣,有时候我们设计表为create table members (uid int primary key,uname varchar(20),hobby varchar(100));表中内容如下mysql> select * from ...
      

  3.   

    在么,需要的是把表1 的蓝木编号 插入表2 lmid根据你的语句,结果是把比较出来的关键词结果写入 表2 的lmid了。 
      

  4.   

    是插入还是替换
     插入:
     insert into t2(lmid)
     select t1.蓝木编号 from t1 inner join t2 on find_in_set(t1.sy_kbj,t2.sy_key)>0
     替换:
     update t2 a 
      set lmid=(
      select group_concat(sy_kbj) from t1 
      where find_in_set(t1.sy_kbj,t2.sy_key)>0
      )
      

  5.   

    表1 sy_kbj  a,b,c,f,e
    表2 sy_key  c,d,e,a,d,d匹配 sy_kbj 与 sy_key 的分词,只要有一个相同。比较下,可能相关的会有多条那么 提取表1 栏目编号 的地一条 插入到 表2 lmid 中去。
      

  6.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  7.   

    我的做法是使用like来把表1的sy_kbj匹配到表2的sy_key中去
    感觉有个缺点- -,如果表1的sy_kbj是“风景”,表2的sy_key中的某个key是“风景山水”,也会被匹配上。
    但是看lz的表中,key都是两个字的,所以应该问题不大update table2 b 
    set lmid=(
        select group_concat(a.`sy_kbj`)
        from table1 a, b
        where b.sy_key like concat('%',a.`sy_kbj`,'%');
    )