获取 GROUP_CONCAT() - MySQL 的数组大小
Get array size for GROUP_CONCAT() - MySQL
我是 运行 我使用 GROUP_CONCAT()
的查询,现在我想知道这个数组的长度。我使用了 LENGTH()
,但是,这显示了行中的字符数。我应该首先使用 GROUP_CONCAT()
吗?
我期待的结果:
Id
GROUP_CONACT()
LENGTH
1
A, B
2
2
C, D
2
3
E, F, G
3
4
A, D
2
5
A, B, D, E, G
5
我不明白为什么你不能只使用 COUNT()
函数,例如:
item | accessory
1 | a
1 | b
1 | c
2 | d
2 | e
SELECT item,
GROUP_CONCAT(accessory) AS accessories, -- the CSV string
COUNT(*) AS num_accessories -- the "size" of the array
FROM yourTable
GROUP BY item;
我认为你想要实现的是计算 ','+1 的出现次数:
使用
ROUND (
(
LENGTH(concated)-LENGTH(REPLACE(concated, ",", "")))/LENGTH(",")+1
) AS COUNT
替换连接到您的 GROUP_CONCAT
我是 运行 我使用 GROUP_CONCAT()
的查询,现在我想知道这个数组的长度。我使用了 LENGTH()
,但是,这显示了行中的字符数。我应该首先使用 GROUP_CONCAT()
吗?
我期待的结果:
Id | GROUP_CONACT() | LENGTH |
---|---|---|
1 | A, B | 2 |
2 | C, D | 2 |
3 | E, F, G | 3 |
4 | A, D | 2 |
5 | A, B, D, E, G | 5 |
我不明白为什么你不能只使用 COUNT()
函数,例如:
item | accessory
1 | a
1 | b
1 | c
2 | d
2 | e
SELECT item,
GROUP_CONCAT(accessory) AS accessories, -- the CSV string
COUNT(*) AS num_accessories -- the "size" of the array
FROM yourTable
GROUP BY item;
我认为你想要实现的是计算 ','+1 的出现次数: 使用
ROUND (
(
LENGTH(concated)-LENGTH(REPLACE(concated, ",", "")))/LENGTH(",")+1
) AS COUNT
替换连接到您的 GROUP_CONCAT