insert into a(金额) values (b1)B表中的内容如下
代码,姓名,金额
1    张三  300
3    李四  400
6    王五  260
我的意思是:
向A表中添加,B表中代码为"3"的人的金额!
insert into a(金额) values (select 代码,金额 from B where 代码="3")
我这样写时系统说子查询不能返回两个字段 。
那我要实现这样的功能要怎么写啊!我实在是没招了!

解决方案 »

  1.   

    可以这样吗?insert into a(金额) values (select 金额 from B where 代码="3")
      

  2.   

    你的语句肯定是不对的,楼上已经说了,但我觉得除了这个问题
    还有另外一个原因
    因为你插入的是一条记录
    所以主键不能为空
    你看看你的主键是什么
    可不可以这样
    INSERT A(代码,金额) VALUES("3",SELECT 金额 FROM B WHERE 代码="3")
    上面是假设代码为主键
      

  3.   

    有没有搞错啊?你
    insert into a(金额) values (select 代码,金额 from B where 代码="3")将两个字段的内容加到一个字段里即使要写,也该这样写啊
    insert into a(金额) values (select 代码+cast(金额 as varchar) from B where 代码
    ="3")前提是你的A表的金额字段为字符型
      

  4.   

    你的意思是不是把B表的两字段插入到A表的两个字段啊?
    那就用这个insert into a(代码,金额) values (select 代码,金额 from B where 代码
    ="3")
      

  5.   

    INSERT A(代码,金额) VALUES("3",SELECT 金额 FROM B WHERE 代码="3")
    这样写能达到我的要求,但可不可以这样写?
    只 select 金额,可以在WHERE 中用到 代码=“3” 吗?
      

  6.   

    可以
    这样的话你要改数据库表的设计
    不要主键
    且代码和姓名字段可以为空
    这样的话
    你就可以到
    INSERT A(金额) VALUE(SELECT 金额 FROM B WHERE 代码="3")
    但这样一来
    估计得到的结果不是你想要的
      

  7.   

    我大概明白你要做什么了
    情况是不是这样的
    表B中记录了代码和金额
    你现在要把表B中的金额填在A中
    代码是它们之间的联系
    如果是这样
    我觉得你可以这样做首先判断记录是否存在
    存在  更新
    不存在  添加用程序实现
    不仅仅是SQL语句的问题
      

  8.   

    我具的例可能不好理解。我现在就写了一条SQL,在程序中肯定要复杂些,这里就写个大概意思!
    insert into a(a1,a2) values ('33',(select b2 where b1='1'))
    系统说 select b2 where b1='1' 有错
    a表
    a1      a2
    b表
    b1       b2
    1        100
    2        200
    3        300
    我想要的结果是 向a表添这条记录。33    100
    添加后a表
    a1      a2
    33      100    
      

  9.   

    用union 呀
    select * from a
    union select from b
      

  10.   

    思路可以理解
    语法有错
    最后一句
    SELECT B2 FROM B WHERE B1="1"
      

  11.   

    INSERT A(代码,金额) VALUES("3",SELECT 金额 FROM B WHERE 代码="3")
    这样写能达到我的要求,但可不可以这样写?
    只 select 金额,可以在WHERE 中用到 代码=“3” 吗?当然可以.
      

  12.   

    zjcxc(邹建) 
    直接写不行!
      

  13.   

    不是直接写不行,而是你的写法错了,应该这样写
    insert into a(a1,a2) select '33',b2  from b where b1='1'