0

我有一张名为“域”的表。A 列(域名)包含各种域名的列表。B列(状态)包含它的“状态”。状态可以是活动、已结束、已阻止、已取消。一个域名可以在 A 列中多次列出,并且不限于只有一种状态。请注意,如果一个域在 A 列中列出了不止一次,并且它的每个实例都具有 Cancelled 状态,则该域的所有出现都应出现在结果中。

我想提取所有“仅”状态已取消的域的列表。他们不能取消状态,也不能取消其他类型的状态。在下面的示例中,它应该只返回 domain5.com。

网站域名

Domain1.com
Domain2.com
Domain1.com
Domain4.com
Domain5.com

地位

活动
结束
取消
阻塞
取消

非常感谢!

4

4 回答 4

0

尝试使用以下 sql 查询:

select Domainnames  from Domains 
            where Status ='cancelled' AND
            Domainnames  NOT IN (SELECT Domainnames  from Domains where Status <> 'cancelled')
于 2012-07-03T06:03:26.123 回答
0
SELECT DISTINCT  domainname FROM DomainsTable
WHERE 
Status = 'Canceled'
于 2012-07-03T05:53:02.293 回答
0

您可以使用一个not exists子句来要求同一域在另一个状态下没有行:

select  *
from    Domains d1
where   status = 'cancelled'
        and not exists
        (
        select  *
        from    Domains d2
        where   d1.domainname = d2.domainname
                and d2.status <> 'cancelled'
        )
于 2012-07-03T05:54:08.830 回答
0

尝试这个 :

select * from domains d 
where d.status = 'cancelled' and 
( select count(*) from domains where domainnames = d.domainesnames) = 1 ;

如果count equals to 1这意味着只有一行d.domainnames和即是选择查询中的当前行。

于 2012-07-03T06:06:33.453 回答