2

我在自定义字段上有一个基于 Wordpress 的 SQL 数据库。

以下 3 列相连:post_id、meta_key 和 meta_value。

meta_key 可以是“name”和“age”,而 meta_value 可以是“John”和“40”。看起来像这样:

╔═════════╦══════════╦════════════╗
║ POST_ID ║ META_KEY ║ META_VALUE ║
╠═════════╬══════════╬════════════╣
║559║名字║约翰║
║ 559 ║ 年龄 ║ 40 ║
║699║姓名║约翰║
╚═════════╩══════════╩════════════╝

我需要计算每个名字为 John 且年龄为 40 岁的人。这可以通过选择语句实现吗?

4

2 回答 2

1
SELECT COUNT(*) totalCOunt
FROM
(
  SELECT post_ID
  FROM table1
  WHERE (meta_key = 'Name'  AND meta_value = 'John') OR
        (meta_key = 'Age'  AND meta_value = '40')
  GROUP BY post_ID
  HAVING COUNT(*) = 2
) s
于 2012-12-09T01:18:21.423 回答
0

我偷了你的小提琴约翰。

SELECT  a.meta_value,b.meta_value,count(*)
FROM TABLE1 a
inner join TABLE1 b on b.Post_ID = a.Post_ID
                  and a.meta_key = 'name'
where b.meta_key = 'age'
and a.meta_value = 'John'
and b.meta_value = 40
group by a.meta_value,b.meta_value

http://sqlfiddle.com/#!2/ebebb/2

哦,是的,我还假设帖子 ID 是将名称与年龄相关联,否则我认为这需要魔法才能知道什么与什么相关联。

于 2012-12-09T01:54:49.030 回答