我运行的时候出现 ,子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
我知道前面数据可以多行, where不能多行,那我应该怎么改错?

解决方案 »

  1.   

    问题首先你是要怎么更新法, 然后再是怎么改, 
    因为 A 和 B 都是多行, 那肯定有一个匹配问题, 哪一个A 对哪一个B呢.
      

  2.   


    就是我先用select语句查询出一个结果, 然后想把结果的每一行都update到一个表中的对应行
      

  3.   


    这是我的语句:
    IF NOT EXISTS((
    select 车牌号码,车架号,发动机号,VIN码 
    from sheet1 where CHECKSUM(车牌号码) 
    in (select CHECKSUM(车牌号码) from 车辆信息)))
    BEGIN
    insert into 车辆信息(车牌号码,车架号,发动机号,VIN码)   
    (select 车牌号码,车架号,发动机号,VIN码 
    from sheet1 where CHECKSUM(车牌号码) 
    in
    (select CHECKSUM(车牌号码) from 车辆信息))
    END
    ELSE
    BEGIN
    update 车辆信息 set 车架号 = (
    select 车架号 
    from sheet1 where CHECKSUM(车牌号码) 
    in
    (select CHECKSUM(车牌号码) from 车辆信息)
    ),
    发动机号 = (
    select 发动机号 
    from sheet1 where CHECKSUM(车牌号码) 
    in
    (select CHECKSUM(车牌号码) from 车辆信息)
    ),
    VIN码 = (
    select VIN码 
    from sheet1 where CHECKSUM(车牌号码) 
    in
    (select CHECKSUM(车牌号码) from 车辆信息)
    )
    where   车牌号码 = (
    select 车牌号码 
    from sheet1 where CHECKSUM(车牌号码) 
    in
    (select CHECKSUM(车牌号码) from 车辆信息)
    )
    END
      

  4.   

    关键语句:
    update 车辆信息 set 车架号 = (
    select 车架号 
    from sheet1 where CHECKSUM(车牌号码) 
    in
    (select CHECKSUM(车牌号码) from 车辆信息)
    ),
    发动机号 = (
    select 发动机号 
    from sheet1 where CHECKSUM(车牌号码) 
    in
    (select CHECKSUM(车牌号码) from 车辆信息)
    ),
    VIN码 = (
    select VIN码 
    from sheet1 where CHECKSUM(车牌号码) 
    in
    (select CHECKSUM(车牌号码) from 车辆信息)
    )
    where   车牌号码 = (
    select 车牌号码 
    from sheet1 where CHECKSUM(车牌号码) 
    in
    (select CHECKSUM(车牌号码) from 车辆信息)
    )
      

  5.   

    如果多行的话,你可以 max 或 min 一下,更新为最大值或最小值 。PS,要和业务确认好。
      

  6.   


    where b=多行 可以改成 where b in (select XXXXXX)可是 update XXX set A= 多行 肯定是不行的。必须唯一,否则更新成哪个值啊
      

  7.   

    where a in any (select * from B)
      

  8.   

    http://bbs.csdn.net/topics/391840907
    求大神去解答啊!!!