这是我的桌子结构

Im尝试运行查询
$sql = mysql_query("SELECT content,niche, COUNT(content) TotalCount FROM table_name GROUP by content HAVING COUNT(content)>=2");我想是给我重述结果,但在用php列出结果和使删除按钮删除重复行时有问题。
Im在php中获得结果
内容ID -生态位ID - TotalCount
208 -2-2
210 - 32 -3
但结果应该是
内容ID -生态位ID - TotalCount
208 -2-2
208 -2-2
210 - 32 -3
210 - 32 -3
210 - 32 -3
im使用php尝试结果显示
while($row = mysql_fetch_assoc($sql)) {
$array[] = $row;
}
foreach($array as $row) {
echo $row['content']." - ".$row['niche']." - ".$row['TotalCount']."<br>";
}发布于 2013-07-20 13:33:48
我认为这就是你想要的,所有重复的行(用row_id),以及它们被复制了多少次;
SELECT a.row_id, a.content, a.niche, cnt
FROM table_name a
JOIN (
SELECT MIN(row_id) m, COUNT(*) cnt, niche,content
FROM table_name
GROUP BY content,niche
HAVING COUNT(*)>1
) b
ON a.niche=b.niche
AND a.content=b.content一个要测试的SQLfiddle。
发布于 2013-07-20 13:25:38
GROUP BY会将结果折叠到您要分组的字段上,在本例中是content --因此您只能看到两个结果。
如果要保留GROUP BY技术,还可以使用GROUP_CONCAT(niche)为给定的content值提取每个niche的逗号分隔列表:
SELECT
content,
GROUP_CONCAT(niche) AS niche,
COUNT(content) TotalCount
FROM
table_name
GROUP BY
content
HAVING
COUNT(content)>=2;然后,您可以使用PHP的explode(',', $row['niche'])获取每个不同的值,然后使用这些值来确定要删除哪个值。
foreach($array as $row) {
$niches = explode(',', $row['niche']);
foreach ($niches as $niche) {
echo $row['content'] . " - " . $niche . " - " . $row['TotalCount'] . "<br />";
}
}发布于 2013-07-20 13:25:48
在sql中进行以下更改:
$sql = mysql_query("SELECT content,niche, COUNT(content) TotalCount FROM table_name HAVING COUNT(content)>=2");https://stackoverflow.com/questions/17762663
复制相似问题