2016-12-04 40 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子句進行分組。