第一张表knowledge:
[knowledge_id] [title] [explanation]
第二张表category:
[category_id] [knowledge_id] [category]
表category对应表knowledge中的每条知识的类别。例如:
表knowledge:
5 熊猫 中国国宝,非常稀少。
9 足球 体育运动,现代足球起源于足球。
表category:
1 5 动物
2 9 体育
现在的情况是,有第三个表knowledge_new:
[id] [title] [explanation] [category]
其中,id、title和explanation已经存在,现在要根据表一和表二把category更新上去。sql语句怎么写?谢谢!

解决方案 »

  1.   

    update knowledge_new c set category=
      (select category from (select b.category,a.title from knowledge a inner join category b 
         on a.knowledge_id=b.knowledge_id)
         where title=c.title)
      

  2.   

    update knowledge_new c set category=
      (select category from (select b.category,a.title from knowledge a inner join category b 
         on a.knowledge_id=b.knowledge_id)
         where title=c.title)
      

  3.   

    我是这样写的,就是一层一层的嵌套。但是效率估计不是很好。上面用连接的的sql语句在效率上比我这个快多少?update knowledge_new
    set category = (select category
                    from category
                    where knowledge_id = (select knowledge_id
                                          from knowledge
                                          where knowledge.title = knowledge_new.title
                                         )
                   );