WordPress 2.7でのお話し。
例えばカスタムフィールドに「都道府県」という情報があり、「沖縄県」を設定している記事だけを抽出したいとしよう。

・カスタムフィールドの設定
  キー = pref
  値  = 「沖縄県」を含む47都道府県名

この場合、目的の記事情報と関連する`wp_postmeta`テーブルには以下の情報が INSERTされている。
meta_key  = 'pref'
meta_value = '沖縄県'

ここで`wp_postmeta`テーブルの構造を少し解説。

フィールド名 データ型 意味
meta_id bigint(20) 当テーブル内のユニークID
post_id bigint(20) 記事のID (`wp_posts`テーブルの`ID`フィールドの値を指す)
meta_key varchar(255) 今回の場合は'pref'が入る
meta_value longtext 今回の場合は'沖縄県'が入る

つまり、都道府県フィールドで「沖縄県」が設定されている記事IDは以下のSQLで取得できるんだね。

SELECT `post_id`
FROM `wp_postmeta`
WHERE `meta_key`='pref' AND `meta_value`='沖縄県';

なぜ今さらこんな事を書いたのかと言うと、僕のカスタムフィールドに対する間違った思い込みがあったため。カスタムフィールドを専用で管理するためのマスタテーブルがあると思い込んで構造解析を進めたためドツボにハマってしまい、2時間近く時間を無駄にしちゃったのよねw

自分への戒めのためにこの記事をいた。
おれ、もっとがんばれ!!