[英]Counting whole DB while searching for specific SQL
我在db中有一张桌子供顾客和他们的眼镜使用
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 |
+-------+-------+-------+-----+
该“计数”列是例如数据库中具有“椭圆形”的记录数。
现在,如果我想对数据库中的每条记录进行计数,这已经很容易了,但是如何在查找特定名称的同时获取所有记录的计数。
我希望这是有道理的
select c.*,
(
select count(1)
from customer_inventory_tbl
where spex = c.spex
) "count"
from customer_inventory_tbl c;
作为根据上述说明的解决方案,请尝试执行以下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列的值进行分组的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.