2012-04-16 61 views
-2

有复杂的MySQL SELECT查询号码结果:没有1个条件

SELECT id, login, date... 
FROM tab1 
    LEFT JOIN tab2 
    LEFT JOIN tab3 
    LEFT JOIN tab4 
    ... 
WHERE 
condition1 = value 
condition2 = value 
... 
ORDER ... 
LIMIT ... 

我需要从同一个选择,但没有条件1和限制得到的结果数。什么是最好的解决方案?有没有更好的解决方案,而不是只做2 SELECT查询?

+3

如果您发布完整查询以及一些示例数据和预期结果将会很有帮助。 – Taryn 2012-04-16 14:57:53

回答

0

通行证条件1作为一个参数,并使用布尔逻辑将其纳入或排除:

... 
WHERE 
condition1 = value OR condition1 IS NULL 

如果你不想使用条件1将其设置为空或传递一个空参数。 这确保了SELECT不关心第一个条件。然后它的计算结果如下:

... 
WHERE 
FALSE OR TRUE 

而布尔逻辑表明当一个值为真时结果为真。如果你需要条件1传递一个实际值与结果变成

... 
WHERE 
TRUE OR FALSE 

这个计算结果为TRUE,以及与确保您的条件得到满足,因为你已经过滤的值。

0

如果您需要一个COUNT行数您必须执行另一个查询,您不能一次返回聚合结果和实际行。

在你的情况下,你也在更改WHERE子句,因此无法对客户端的行进行计数。

如果您关注性能,则需要显示您正在使用的实际查询,以便任何人都能够提供帮助。