我可以计算MySQL中枚举类型的索引数量吗?

时间:2018-02-19 09:36:30

标签: mysql indexing enums

e.g. "Food" column is enum type

我可以计算列#34;食物"?

的索引数量

我已经习惯了  SELECT COUNT(food) FROM table WHERE code=1

但它没有用。

2 个答案:

答案 0 :(得分:0)

首先你的数据库模式不好,如果说这是一个解决方案:

您可以计算食物中逗号的数量并添加1:

SELECT LENGTH(food) - LENGTH(REPLACE(food, ',', '')) + 1
FROM table WHERE code=1

答案 1 :(得分:0)

SELECT COUNT(DISTINCT food)
    FROM table

这将为food提供使用的值的数量。如果你有一些未使用的值,那么你需要这样的东西:

SELECT table_name, column_name,
       LENGTH(column_type) - LENGTH(REPLACE(column_type, ',', '')) + 1 AS items,
       column_type
    FROM information_schema.columns
    WHERE table_schema = 'pics'
      AND data_type = 'enum';

+-------------+-------------+-------+----------------------------------------------------------+
| table_name  | column_name | items | column_type                                              |
+-------------+-------------+-------+----------------------------------------------------------+
| collections | index_cat   |     7 | enum('unk','wpc','family','trip','hike','music','other') |
| pics        | skip        |     2 | enum('','skip')                                          |
| pics        | prec        |     5 | enum('unk','click','est','manual','adj')                 |
| picsav      | prec        |     4 | enum('unk','click','est','manual')                       |
| picsav2     | prec        |     4 | enum('unk','click','est','manual')                       |
+-------------+-------------+-------+----------------------------------------------------------+

(对于您提出的具体问题,这太过分了。)