-2

有复杂的 MySql SELECT 查询:

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 查询更好的解决方案吗?

4

2 回答 2

0

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

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

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

于 2012-04-16T15:18:46.540 回答
0

将 condition1 作为参数传入并使用布尔逻辑来包含或排除它:

...
WHERE
condition1 = value OR condition1 IS NULL

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

...
WHERE
FALSE OR TRUE

布尔逻辑状态,当一个值为真时,结果为真。如果您需要 condition1 传递一个实际值,结果变为

...
WHERE
TRUE OR FALSE

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

于 2012-04-16T14:58:02.997 回答