我需要一个查询来选择重复记录并计算总重复记录
Posted Records
PostID | Location
1 | Delhi,Mumbai,Patna
2 | Mumbai,Noida
3 | Delhi
4 | Mumbai,Noida
我想要这个结果
Location | Total
Delhi | 2
Mumbai | 3
Patna | 1
Noida | 2
答案 0 :(得分:2)
首先,您应该规范化您的结构,摆脱逗号分隔值,并使用另一个表格将您的位置与您的帖子表格相关联,请参阅Database normalization,对于您当前的结构,您可以做的是获取您的所有位置表并将它们插入到新表中,然后在新表上使用聚合函数
CREATE TABLE locaions (cities CHAR(255)) ;
SET @S1 = CONCAT(
"INSERT INTO locaions (cities) VALUES ('",
REPLACE(
(SELECT
GROUP_CONCAT(`Location`) AS DATA
FROM
`posts`),
",",
"'),('"
),
"');"
) ;
PREPARE stmt1 FROM @s1 ;
EXECUTE stmt1 ;
这将在位置表中插入包含重复数据的所有位置,然后使用以下查询来获得所需的计数
SELECT cities,count(*)
FROM locaions
group by cities