没有1个条件的结果数

时间:2012-04-16 14:55:27

标签: mysql sql database

有复杂的MySql SELECT查询:

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

我需要从相同的select中获取结果数,但没有condition1和limit。什么是最好的解决方案?是否有更好的解决方案,而不仅仅是进行2次SELECT查询?

2 个答案:

答案 0 :(得分:0)

将condition1作为参数传递,并使用布尔逻辑将其包含或排除:

...
WHERE
condition1 = value OR condition1 IS NULL

如果您不想使用condition1,请将其设置为null或传入null参数。 这确保SELECT不关心第一个条件。然后评估为:

...
WHERE
FALSE OR TRUE

布尔逻辑表示当一个值为true时结果为true。如果您需要condition1传递实际值,结果将变为

...
WHERE
TRUE OR FALSE

此评估也为TRUE,并确保您的条件得到满足,因为您已过滤了值。

答案 1 :(得分:0)

如果您需要执行另一个查询的行数COUNT,则无法一次性返回聚合结果和实际行。

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

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