1

Hi I have query that confusing, this is the query

SELECT meta_value, meta_count, post_id
FROM wp_post_meta
GROUP BY IF(ISNULL(target_key), '', target_key) 
ORDER BY `meta_count` DESC 
LIMIT 30

Some of target key is null but some is value exist, how can I make result if target_key is value exist make it GROUP BY but if empty GROUP BY disabled

Anyone can help me?

4

2 回答 2

2

如果target_key是,null您可以使用对每条记录进行分组的唯一值,以便这些记录最终都在各自的组中。例如,如果post_id是表的键,则可以按该键进行分组。如果键可以与字段具有相同的值,您可能需要为不同的值添加前缀target_key

GROUP BY IF(ISNULL(target_key), 'x' + post_id, 'y' + target_key)

请注意,您的查询在 上进行分组target_key,但您选择的其他字段不使用聚合(最小值、最大值、计数等),因此结果将是每个组中任意记录的值。如果每个组中的所有记录的这些值都不相同,则结果不可预测。

于 2012-07-12T00:13:38.007 回答
2
SELECT meta_value,meta_count,post_id
FROM wp_post_meta
WHERE target_key IS NOT NULL
GROUP BY target_key

UNION ALL

SELECT meta_value,meta_count,post_id
FROM wp_post_meta
WHERE target_key IS NULL

ORDER BY meta_count DESC
LIMIT 30

只是一个粗略的想法。但是,没有经过测试,我不确定这是否是您想要的。

于 2012-07-12T00:15:16.923 回答