两张数据库表:A和B。
结构如下:
A表:<table border="1">
  <tr>
    <th>name</th>
    <th>number</th>
  </tr>
  <tr>
    <td>张三</td>
    <td>1</td>
  </tr>
   <tr>
    <td>李四</td>
    <td>2</td>
  </tr>
   <tr>
    <td>王五</td>
    <td>3</td>
  </tr>
</table>
B表:<table border="1">
  <tr>
    <th>username</th>
    <th>id</th>
  </tr>
  <tr>
    <td>张三</td>
    <td>   </td>
  </tr>
   <tr>
    <td>赵六</td>
    <td>   </td>
  </tr>
   <tr>
    <td>孙七</td>
    <td>   </td>
  </tr>
   <tr>
    <td>王五</td>
    <td>   </td>
  </tr>写出一个sql,找出B表username中与A表name重复的数据,把重复数据在A表中的number值取出插入到B表对应的id字段中。
谢谢。

解决方案 »

  1.   

    哭死,忘记了csdn论坛粘源代码就是源代码,不是显示效果的。
    表结构式这样的:
    A表:
    name      number      
    张三       4
    李四       6
    王五       5 B表:
    username                  id
    张三
    陈其
    王五
    赵六
      

  2.   

    另外,希望得到标准的sql语句。
    ms sql里面我写的实现了,oracle我写的sql不好使。
      

  3.   

    number    是oracle的关键字。试着把你的mysql的那个update的sql里面的 number改成 "number"看看。
      

  4.   

    update b set b.id = (select a."number" from a where a.name = b.username);
      

  5.   

    update B表
    set id=(select number from A表 where name=B表.username)
    where exists (select 1 from A表 where name=B表.username)
      

  6.   


    我只是举个例子,实际上字段名称不是number,oracle创建表的时候不允许表名为number。我在ms sql里写的逻辑是:
    UPDATE B
    SET b.id = a.number
    FROM B AS b,
              (SELECT name, number
             FROM A) AS a
    WHERE b.username = a.nameoracle不好使。。
      

  7.   


    确实有重复数据,我大意了。。
    表A的name字段有重复,我整理一下再试试你的sql。。