The following code allows you to add the parameters wpse4528_key
and wpse4528_minimum
to your queries, and will then add an extra criterium to the where clause that counts the number of meta values with your key.
add_filter( 'posts_where', 'wpse4528_posts_where', 10, 2 );
function wpse4528_posts_where( $where, &$wp_query )
{
global $wpdb;
$count_key = $wp_query->get( 'wpse4528_key' );
if( $count_key ) {
$where .= $wpdb->prepare( " AND (SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE {$wpdb->postmeta}.post_id = {$wpdb->posts}.ID AND {$wpdb->postmeta}.meta_key = %s) >= %d", $count_key, $wp_query->get( 'wpse4528_minimum' ) );
}
return $where;
}