我试图返回具有重复值的最大限定数量的未分组值的列表。我已经恢复成这样值的列表:选择重复/重复值,未分组
select TagDirID from tags where id = '550'
的结果将是:
9508
10382
10672
65454
65454
65454
65454
正如你可以看到有是65454. 4次的重复,我想返回有一个列表用户为TagDirID重复定义的最大数量。例如,只选择重复3次或更少:
9508
10382
10672
65454
65454
65454
的所有方法我发现回报分组名单,我想保持单个项目。这是可以在查询中完成的事情吗?有一个可用的主键TagID。
编辑:这是什么做的是选择所有项目的标签,ID =“550”。因为它是用户内容,有时候人们多次标记相同的东西,我试图减少我显示的重复内容。
编辑2:是这样,而接受的答案为我工作,我发现这是我需要的东西有点太慢了,所以我想出了一个PHP的解决方案:
function get_tags($ID = '', $tags_to_keep = 3)
{
// Select all tags.
$query = "select TagDirID, Tag from tags where id = '$ID'";
$tags_result = mysql_query($query);
$num_results = mysql_num_rows($tags_result);
for ($i=0; $i<$num_results; $i++)
{
//Get tag topics
$tags_row = mysql_fetch_array($tags_result);
//build array of items already found with counts
$tags_count = array_count_values($tags_filter);
//if number of tags already found($tags_count/$tags_filter) is less than or equal to tags_to_keep then add to filtered array and return array.
if($tags_count[$tags_row['TagDirID']] <= $tags_to_keep)
{
$tags_filter[$i] = $tags_row['TagDirID'];
$tags[$i] = $tags_row['Tag'];
}
}
return $tags;
}
TagID是主键。 – 2011-05-18 16:30:13
@Brad Stewart - 好的。已调整。 – Thomas 2011-05-18 16:42:59
@ thomas。太复杂了,不是吗?请你解释或提交任何链接。在上查询'AND t2.TagID一件事
diEcho
2011-05-18 17:03:47