获得两种类型的行数最少的行

时间:2015-06-25 10:44:48

标签: php mysql

我有以下查询。

WHERE id = :id AND category = :cat

这完美无缺。但我要求从WHERE category = :cat获取行数以及从{{1}}获取行数。是否可以在不必两次编写所有SELECT查询行的情况下同时执行这两个操作?

2 个答案:

答案 0 :(得分:1)

您可以使用条件求和来获得2个不同的计数

select 
sum(id = :id AND category = :cat) as count1,
sum(category = :cat) as count2
from furniture;

稍后您只需获取记录并获取count1count2

的值

注意:如果您只是进行行计数,它将始终返回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子句。这减少了处理剩余查询所需的行数。