我是一个菜鸟 学sql语句没多久 写了这样的一条sql语句:select * from SJ_KUCUN where (select LOWSTOCKPILE from SJ_INFORMATION) >= KUNCUNNUMBER order by KUNCUNID ASC   执行起来有问题 请高手帮我改一下  谢了 在线等答案!

解决方案 »

  1.   

    提示:单行子查询返回多个行  我用的是oracle数据库!
      

  2.   

     (select LOWSTOCKPILE from SJ_INFORMATION) >= KUNCUNNUMBER    这不就是where后面的条件
      

  3.   

    建议改为:select * 
    from SJ_KUCUN KU,
         (select LOWSTOCKPILE from SJ_INFORMATION) IN
    where IN.LOWSTOCKPILE >= KU.KUNCUNNUMBER 
    order by KUNCUNID ASC
    在where后加子查询会导致数据库效率降低很多,一般子查询都放在from之后
      

  4.   

    select * from SJ_KUCUN where (select DISTINCT
     LOWSTOCKPILE from SJ_INFORMATION) >= KUNCUNNUMBER order by KUNCUNID ASC
      

  5.   

    select * from SJ_KUCUN where ?=((select LOWSTOCKPILE from SJ_INFORMATION) >= KUNCUNNUMBER) order by KUNCUNID ASC 
    我觉得这个语句怪怪的,如果where后边接的是子查询,那应该是?=子查询。
      

  6.   

    5楼的  你写的我不是很理解  这里"select * from SJ_KUCUN KU,"中的" KU, "是什么意思 ?  谢谢~~
      

  7.   

    where (select LOWSTOCKPILE from SJ_INFORMATION) >= KUNCUNNUMBER这里面的Select返回了一堆值,但>=号两边要求都只能是一个值, 所以在Select语句中加个条件,限制一下它只查出一个值来就行
      

  8.   

    select * from SJ_KUCUN where (select DISTINCT
     LOWSTOCKPILE from SJ_INFORMATION) >= KUNCUNNUMBER order by KUNCUNID ASC
      

  9.   

    select * from SJ_KUCUN where  KUNCUNNUMBER<=(select LOWSTOCKPILE from SJ_INFORMATION)  order by KUNCUNID ASC
    我绝的是这样
      

  10.   

    在子查询里加个where限定只出一条就行啦, 怎么都这么费劲呢,disntic是去重,不是限定一条的
      

  11.   

    select * from SJ_KUCUN where (select DISTINCT LOWSTOCKPILE from SJ_INFORMATION) >= KUNCUNNUMBER order by KUNCUNID ASC
    11楼的能解释下吗?  DISTINCT 不是去重复的吗?  为什么加上它之后却达到了我想要的效果?  谢谢啦
      

  12.   

    select k.KUNCUNID,k.REAGENTNAME,k.KUNCUNNUMBER,k.REAGENTUNITNAME,k.DEPOSITPLACE,k.ABTEILUNG from SJ_KUCUN k,SJ_INFORMATION i where k.REAGENTNAME=i.REAGENTNAME and k.KUNCUNNUMBER < i.LOWSTOCKPILE order by KUNCUNID ASC  这样太解决的   还是谢谢啦
      

  13.   

    select LOWSTOCKPILE from SJ_INFORMATION 返回多行数据了。