在搜索特定SQL时计算整个数据库

时间:2016-12-04 18:24:05

标签: mysql sql

我在客户端及其眼镜的数据库中有一张表

customer_inventory_tbl

SELECT * FROM customer_inventory_tbl

+-------+-------+-------+
|id(pk) | name  | spex  |
+-------+-------+-------+
|1      |John   |Oval   |
|2      |Steve  |Angular|
|3      |John   |Aviator|
|4      |Kevin  |Supra  |
|5      |Jamie  |Oval   |
|6      |Ben    |Supra  |
+-------+-------+-------+

(这是一种更简化的版本,哈哈)

如果我查看约翰的记录,就会显示

SELECT * FROM customer_inventory_tbl WHERE name=John

+-------+-------+-------+
|id(pk) | name  | spex  |
+-------+-------+-------+
|1      |John   |Oval   |
|3      |John   |Aviator|
+-------+-------+-------+

但我要求的是在查看约翰的记录时,它会向我显示

+-------+-------+-------+-----+
|id(pk) | name  | spex  |count|
+-------+-------+-------+-----+
|1      |John   |Oval   |2    |
|3      |John   |Aviator|1    |
+-------+-------+-------+-----+

那"计数" column是数据库中具有" Oval"的记录数。例如。

现在这很容易,如果我想计算数据库中的每条记录,但如何在查找特定名称时获取所有记录的计数。

我希望这是有道理的

2 个答案:

答案 0 :(得分:1)

select c.*,
    (
        select count(1)
        from customer_inventory_tbl
        where spex = c.spex
        ) "count"
from customer_inventory_tbl c;

答案 1 :(得分:0)

根据上述说明,请尝试执行以下sql查询

SELECT *,(select count(id) from customer_inventory_tbl group by spex)
 as count FROM customer_inventory_tbl WHERE name='John'

在上面提到的sql查询中,通过子查询检索计数器值,并使用 GROUP BY 子句根据spex列的值分组记录。