簡體   English   中英

MySQL計數同一列中是否存在多個值

[英]MySQL Count presence of multiple values in same column

我有一個名為Customers的表,並帶有一個CustID列,另一個表名為ProductCode。 有33種可能的產品(編號1到33),每個客戶可以擁有任何產品組合。 每個客戶只有一行,並且每個客戶擁有的所有產品都顯示在ProductCode列中,中間有一個空格,即:

CUSTID     PRODUCTCODE  
------     -----------

001        3 12 18 22 32  
002        9 6 18 36  
003        3 6 7 26  
004        9 11 33   
005        6 21 28 29 30 31  
006        1 3 6 21 30 31  

我需要能夠對每種產品進行計數並添加代碼的文本描述:

ProdCode    Description       Count  
~~~~~~~~    ~~~~~~~~~~~       ~~~~~  
1           Lawnmower         1  
3           Spade             3  
6           Clippers          4  
etc

謝謝!

永不永不將多個值存儲在一列中!

如您現在所見,這只會導致問題。 請使用其他表格規范化數據庫結構

customer_products
CUSTID     PRODUCTCODE  
------     -----------
001        3
001        12
001        18
---
002        9
002        6
...

然后,您可以從customer表中刪除PRODUCTCODE列。

一種解決方案是將架構更改為具有兩列:

1)客戶ID 2)產品ID

因此數據看起來像這樣:

cust_id| product_id

001    | 3
001    | 6
002    | 9

……

因此,現在在mysql查詢中,您可以使用如下查詢

Select product_id,count(*) as num_products from table_name group by product_id;

希望這可以幫助。

如果您無法更改架構,則必須獲取數據,並且必須使用腳本語言按需處理數據。

嘗試這個:

CREATE TABLE ord (custid VARCHAR(3), productcode VARCHAR(40));

INSERT INTO ord VALUES ('001', '3 12 18 22 32');
INSERT INTO ord VALUES ('002', '9 6 18 36');
INSERT INTO ord VALUES ('003', '3 6 7 26');
INSERT INTO ord VALUES ('004', '9 11 33');
INSERT INTO ord VALUES ('005', '6 21 28 29 30 31');
INSERT INTO ord VALUES ('006', '1 3 6 21 30 31');

CREATE TABLE products (code VARCHAR(2));

INSERT INTO products VALUES ('3');
INSERT INTO products VALUES ('12');
INSERT INTO products VALUES ('18');
INSERT INTO products VALUES ('22');
INSERT INTO products VALUES ('32');
INSERT INTO products VALUES ('9');
INSERT INTO products VALUES ('6');
INSERT INTO products VALUES ('31');

CREATE TABLE ord_prod (code VARCHAR(2), count_of_products INT) AS
  SELECT p.code, 
        (SELECT COUNT(1)
           FROM ord o
         WHERE INSTR(CONCAT(' ', o.productcode, ' '), CONCAT(' ', p.code, ' ')) > 0) AS count_of_products
    FROM products p;

在SQLFiddle中檢查: http ://sqlfiddle.com/#!2/a7f94/1

根據需要更改類型,添加其他產品,添加說明等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM