1

meta_key が存在し、'' でない場合にペットの投稿を返すクエリがあります。

-- Pets that are assigned tags
SELECT p.ID
FROM FxFfekP0_posts p LEFT JOIN FxFfekP0_postmeta pm
ON p.ID = pm.post_id
WHERE p.post_type = 'pets'
AND pm.meta_key = 'tag'
AND pm.meta_value != ''

しかし、今は、meta_keytagをまったく含まないか、meta_key tag= '' のいずれかの投稿を含む結果セットを取得する必要があります ...

ヘルプ?

4

2 に答える 2

5

このようなものが動作するはずです:

SELECT p.ID
FROM FxFfekP0_posts p LEFT JOIN FxFfekP0_postmeta pm
ON p.ID = pm.post_id AND pm.meta_key = 'tag'
WHERE p.post_type = 'pets'
AND ifnull(pm.meta_value, '') = ''

を結合条件に移動したpm.meta_key = 'tag'ので、欠落している行は引き続き結果セットに ( NULLs として) 表示されます。次に、ifnull()単一の条件でNULLs と空の文字列の両方を取得できます。

于 2016-09-03T04:35:12.653 に答える
0

私はこれが私が探しているものでうまくいくと信じています...誰かがこのクエリが失敗した場所を指摘できない限り:

SELECT p.ID
FROM FxFfekP0_posts p
LEFT JOIN FxFfekP0_postmeta pm ON pm.post_id = p.ID 
AND pm.meta_key = 'tag'
WHERE p.post_type = 'pets'
AND pm.meta_key IS NULL 
OR pm.meta_value = ''
于 2016-09-06T20:28:01.297 に答える