SQL - 将条件放在where子句中

时间:2011-02-13 13:38:59

标签: sql count group-by left-join where-clause

今天早些时候,我在SO Count() and left join problem

提出了这个问题

如上所述,我的问题的正确查询是:

select s.name
       , p.name
       , count(p.id) 
from   Shop as s
       left join Product as p on p.shop=s.id AND p.status <> '8796107276379'
group by 
       s.id, p.name

我们使用专有框架,允许我们为在系统上运行的查询添加限制。我很确定它是通过在查询结尾附加where子句来实现的。

问题是我是否可以p.status <> '8796107276379'where子句中的方式翻译上述查询,以便我可以将其添加为限制?

Count() and left join problem处的其他答案都将条件放在where子句中,但都没有奏效。

有什么想法吗?

提前致谢!

Krt_Malta

2 个答案:

答案 0 :(得分:2)

select s.name
       , p.name
       , count(p.id) 
from   Shop as s
       left join Product as p on p.shop=s.id
where
       p.shop is null or p.status <> '8796107276379'
group by 
       s.id, p.name

这适用于Oracle和MySQL,但它可能在SQL Server上失败(不确定)。

答案 1 :(得分:1)

当然......(对于SQL Server)

select s.name
       , p.name
       , count(p.id) 
from   Shop as s
       left join Product as p on p.shop=s.id 
where IsNull(p.status,'') <> '8796107276379'
group by 
       s.id, p.name