2016-12-04 45 views
0

我有一个客户数据库表和他们的眼镜计数整个DB,而搜索特定的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 | 
+-------+-------+-------+-----+ 

那“数”一栏是在具有“椭圆形”例如数据库中的记录数。

现在很简单,如果我想计算db中的每条记录,但是如何在查找特定名称的同时获得所有记录的计数。

希望根据上述描述,这是有道理

回答

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

作为一种解决方案,请尝试执行以下SQL查询

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

在上述的SQL查询的计数器值被通过子查询中检索与记录根据spex列的值使用GROUP BY子句进行分组。