如果status = n,如果status = N且status = P,结果不显示

时间:2014-01-17 13:06:04

标签: mysql mysqli

我的表名为master_consmnt,数据低于

fra_code    mode    cnum    cost    edate       status
ET7867FRA   SURFACE 19001   10.000  2014-01-17  P
ET7867FRA   SURFACE 19005   5.000   2014-01-17  P
ET7867FRA   SURFACE 19005   10.000  2014-01-17  P
FRANE3981   SURFACE 19005   0.000   2014-01-17  P
FRARE5664   SURFACE 19005   18.000  2014-01-17  N
FRARE5664   SURFACE 19001   14.000  2014-01-17  N
FRARE5664   SURFACE 180001  38.000  2014-01-17  N

我想要来自表master_consmnt的cnum,其中cnum.status = N,请在主表中注明有多个cnum.status数据

fra_code    mode    cnum    cost    edate       status
FRARE5664   SURFACE 180001  38.000  2014-01-17  N
上面是我需要的实际结果,对于之前发布的问题错误感到抱歉。

2 个答案:

答案 0 :(得分:1)

根据您的发布标题:

  

...如果status = n需要结果集,如果status = N且status = P结果不显示

您可能需要区分大小写的比较。

select * from mast where binay(status)='n';

此查询将获取status值为n的所有记录。

但是,您的行数据显示n中没有statusNP

答案 1 :(得分:0)

Gordon Linoff堆栈溢出成员发布了这个问题的正确答案,如下所示

select mc.*
from master_consmnt mc
where mc.status = 'N' and
      not exists (select 1
                  from master_consmnt mc2
                  where mc2.cnum = mc.cnum and status = 'P'
                 );