日期:2014-05-16  浏览次数:20755 次

一个比较棘手的问题,望高手解答
现在碰到一个这样一个问题
表:   A   有字段   a_id,   a_language,a_name
表:   B   有字段   b_id,   a_name,b_en_name
表A,   a_id和a_language是自动增长的id(意思是同一个a_id会有几个不同的a_language的记录,比如a_id是1的记录会有   a_id=1   and   a_language=1和a_id=1   and   a_language=2和a_id=1   and   a_language=3和a_id=1   and   a_language=4),a_language是语言,有1,2,3,4,   4种语言,a_name是每种语言对应的内容,比如   a_language=1   是英文,   a_name   就是“HEllo”,那么会有另一条记录是a_language=2   是中文,   a_name   就是“你好”
现在表B的b_en_name   是空的,但是a_name都是有内容的,比如   a_name=“你好”,   我想要表B的b_en_name=“HEllo”,也就是说我想表B的b_en_name就是a_name的英文翻译,不管B.a_name里面是哪种语言,我select   a_id   from   A   where   A.a_name=B.a_name,   然后得到的a_id,   然后select   a_name   from   A   where   A.a_id=查出来的id   and   a_language=1   (得到英文的翻译)然后insert   到B的b_en_name
里面,

不知道表达清除吗,我想请问这样的操作,能不能一句sql解决?   现在我使用php来做,速度有点慢,望高手解答,谢谢

------解决方案--------------------
可以使用insert into b select 你之前写的语句。
------解决方案--------------------
update b set b_en_name=(select a_name from a where a_language=1 and a_id=(select a_id from A where A.a_name=B.a_name))