我的数据是这样的 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.不得包含。我怎样才能解决这个问题?谢谢 这是我桌子上的数据
答案 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
表示获取至少有一行不相等的所有数字都会被拒绝