php / mysql:选择查询无法正常工作

时间:2016-01-04 13:01:16

标签: mysql

抱歉没有好头衔。因为我真的不知道要使用的关键字。 我有一个名为document的表 我有一个列名状态和号码

我的数据是这样的 3组数据 1。

number -1 status-signed
number -1 status-signed
number -1 status-declined

我的php网站上有一个html表

我想要的是,如果其中一个状态被拒绝,则不会显示数据 所以基本上数字1不会出现在html表

所以我怎么能查询呢。我有类似的东西

select number, status from table document where status !="declined" and status = "signed" group by number

但该查询无效。它会一直显示其中包含拒绝状态的数字。

抱歉我的英文不好

如下面的答案所述,我试过这个sql

select number
from  document 
group by number
having sum(`status` <> 'declined') > 0 and
   sum(`status` = 'signed') > 0;

但上面的查询不起作用,因为它一直显示数字1.不得包含。我怎样才能解决这个问题?谢谢 这是我桌子上的数据

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以使用having子句而不是where子句执行所需操作。也就是说,在聚合之后进行比较

select number
from table document 
group by number
having sum(status <> 'declined') > 0 and
       sum(status = 'signed') > 0;

如果您需要状态,可以将group_concat(status)添加到select

编辑:

如果您希望过滤掉数字,请更改having子句:

select number
from table document 
group by number
having sum(status = 'declined') = 0 ;

答案 1 :(得分:1)

试试这个:

select number
from table document 
group by number
having sum(`status` <> 'declined') > 0 and
   sum(`status` = 'signed') > 0;

状态是关键字

答案 2 :(得分:1)

给出

  

如果其中一个状态被拒绝,则不会显示数据

正确的查询是

select number
from  document 
group by number
having sum(`status` = 'declined') = 0 and
   sum(`status` = 'signed') > 0

总和(status&lt;&gt;&#39;拒绝&#39;)&gt; 0

表示获取至少有一行不相等的所有数字都会被拒绝