订单表 order 
id   uid  mid  totil
1      0    1   1000
2      2    0   2000
3      1    0   3000
管理员表 Manager
id  name
1   小红
用户表
id  name
1   小张
2   小王查询出来要求是:当uid为0时就先用mid查询反则用uid查询
查询出来为
id  name totil
1   小红 1000
2   小王 2000
3   小张 3000谢谢很急
以上结账

解决方案 »

  1.   

    写两个函数,分别查询返回一个name
    当uid为0时调用一个函数
    else 调另一个
      

  2.   

    select order.id,order.uid,order.mid,order.totil,Manager.name
    Where order.mid=Manager.id and order.uid=0
    union all
    select order.id,order.uid,order.mid,order.totil,user.name
    Where order.uid=user.id and order.uid<>0
      

  3.   


     select a1.id  b1.name, a1.totil from order a1 ,Manager b1 
      where a1.mid   = b1.id and a1.uid  =0
     union
      select a2.id  b2.name, a2.totil from order a ,用户表 b2
      where a2.uid  = b2.id and a2.uid <>0
      

  4.   

    RE:
    写两个函数,分别查询返回一个name
    当uid为0时调用一个函数
    else 调另一个
    ------------
    我也知道这样啊
    但我想一次返回
      

  5.   

    是一次返回啊本来就是一条语句用case 判断一下执行那个不就好了
    当然用联合也可以,速度差不多,数据库里也不会增加些垃圾代码