我有以下查询。
WHERE id = :id AND category = :cat
这完美无缺。但我要求从WHERE category = :cat
获取行数以及从{{1}}获取行数。是否可以在不必两次编写所有SELECT查询行的情况下同时执行这两个操作?
答案 0 :(得分:1)
您可以使用条件求和来获得2个不同的计数
select
sum(id = :id AND category = :cat) as count1,
sum(category = :cat) as count2
from furniture;
稍后您只需获取记录并获取count1
和count2
注意:如果您只是进行行计数,它将始终返回1,因为它使用聚合函数
答案 1 :(得分:1)
我建议您将查询编写为:
select sum(id = :id) as numCatId, count(*) as numCat
from furniture
where cat = :cat;
将条件放在where
子句中允许MySQL在furniture(cat)
上使用索引(或者更好furniture(cat, id)
。一般来说,最好将常见的过滤条件放在where
子句。这减少了处理剩余查询所需的行数。