有复杂的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查询?
答案 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
子句,因此无法计算客户端的行数。
如果您担心性能问题,则需要显示您正在使用的实际查询,以便任何人能够提供帮助。