我在自定义字段上有一个基于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语句?
答案 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是一个与年龄有关的名字,否则我认为这需要魔法知道什么是什么。