1

こんにちは、紛らわしいクエリがあります。これがクエリです

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

ターゲットキーの一部はnullですが、一部は値が存在します.target_keyが値が存在する場合に結果を作成するにはどうすればよいですか?ただし、空のGROUP BYが無効になっている場合

誰でも私を助けることができますか?

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 に答える