select if(1,-1,(select 2));
如果第二次查询的是一个字段 这样就可以了。但如果第二次需要返回两个字段如何处理呢?!select if(1,-1,(select 2,3));这样就不行咯!。

解决方案 »

  1.   

    select 2,3这个返回的算是一个结果集
      

  2.   

    select if(1,-1,(select 2)),if(1,-1,(select 3));
    只能分开。但这个应用非常奇怪,建议楼主举实际例子,这样可以根据实际应用看看有没有更适合的方案。
      

  3.   

    子查询中只能返回1个字段,select 2,3是两个字段写成2个字段即可
    select if(1,-1,(select 2)),if(1,-1,(select 3))
    具体问题是什么
      

  4.   

    select if((select count(*) from table_a)>0,-1,(select `A` from table_b));意思是先查询表a,如果存在就不用再查询了,如果不存在就查询表b,如果返回表b的一个字段是可以的。问题是如何返回表b的两个字段?!
      

  5.   

    select DISTINCT IF(aa>0,-1,b.a), iF(aa>0,-1,b.b) from 
    (select count(*) as a from table_a) a,table_b b
      

  6.   

    select * from a where id=1
    union all
    select * from b where (select count(*) from table_a)=0
      

  7.   


    SP是指split切割的意思么?!我也想过把两个字段用小数点结合起来,然后取得数据后再分开。现在来请教前辈是不是有更好的办法解决。
      

  8.   

    SP是指split切割的意思么?!
    存储过程
      

  9.   


    小弟不懂DISTINCT的作用,在不管DISTINCT的意义的情况下
    select IF(a.a>0,-1,b.a), iF(a.a>0,-1,b.b) from (select count(*) as a from table_a) a,table_b b
    这样是达到要求了。但我有个疑问:这样不是就执行了两次查询么?
      

  10.   

    是,因为你要根据(select count(*) as a from table_a)的结果来判断取值