同一列中的值不同,如何检索数据

时间:2012-12-09 01:16:23

标签: sql

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

连接了以下3列:post_id,meta_key和meta_value。

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

╔═════════╦══════════╦════════════╗
║ POST_ID ║ META_KEY ║ META_VALUE ║
╠═════════╬══════════╬════════════╣
║     559 ║ name     ║ John       ║
║     559 ║ age      ║ 40         ║
║     699 ║ name     ║ John       ║
╚═════════╩══════════╩════════════╝

我需要计算名字为John且年龄为40岁的每个人。这是否可以使用select语句?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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是一个与年龄有关的名字,否则我认为这需要魔法知道什么是什么。