繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM