您好我有疑问令人困惑,这是查询
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
某些目标键为空但有些值存在,如果target_key为value,如何生成结果使其成为GROUP BY但如果禁用空GROUP BY
任何人都可以帮助我?
答案 0 :(得分:2)
当target_key
为null
时,您可以使用每个记录唯一的值进行分组,以便这些记录最终都在各自的组中。例如,如果post_id
是表的键,则可以按此分组。如果密钥可能与target_key
字段具有相同的值,则可能需要为不同的值添加前缀:
GROUP BY IF(ISNULL(target_key), 'x' + post_id, 'y' + target_key)
请注意,您的查询是在target_key
上进行分组,但是您在不使用聚合(min,max,count,et.c。)的情况下选择其他字段,因此结果将是来自任意记录中的任意记录的值每组。如果这些值对于每个组中的所有记录都不相同,则结果是不可预测的。
答案 1 :(得分: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
只是一个粗略的想法。但是没有经过测试,我不确定这是不是你想要的。