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

Sql 同一列中的不同值,如何检索数据,sql,Sql,我有一个基于Wordpress的SQL数据库构建在自定义字段上 连接以下三列:post_id、meta_key和meta_value meta_键可以是“name”和“age”,而meta_值可以是“John”和“40”。 看起来是这样的: ╔═════════╦══════════╦════════════╗ ║ POST_ID ║ META_KEY ║ META_VALUE ║ ╠═════════╬══════════╬════════════╣ ║ 559 ║ name

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

连接以下三列:post_id、meta_key和meta_value

meta_键可以是“name”和“age”,而meta_值可以是“John”和“40”。 看起来是这样的:

╔═════════╦══════════╦════════════╗ ║ POST_ID ║ META_KEY ║ META_VALUE ║ ╠═════════╬══════════╬════════════╣ ║ 559 ║ name ║ John ║ ║ 559 ║ age ║ 40 ║ ║ 699 ║ name ║ John ║ ╚═════════╩══════════╩════════════╝ ╔═════════╦══════════╦════════════╗ ║ 邮政编码║ 元键║ 元值║ ╠═════════╬══════════╬════════════╣ ║ 559║ 名称║ 约翰║ ║ 559║ 年龄║ 40║ ║ 699║ 名称║ 约翰║ ╚═════════╩══════════╩════════════╝ 我要数一数每个叫约翰,年龄40岁的人。使用select语句可以这样做吗

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

    • 约翰,我偷了你的小提琴

      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
      


      哦,是的,我还假设post id是一个名字和一个年龄的关系,否则我想这需要魔法才能知道什么与什么有关。

      这不起作用,因为名字/年龄是“meta_key”列的值。嗯。。越来越近了,但是如果我有很多约翰,我仍然会得到那些不到40岁的人:-/我的意思是,如果你把一个叫“Bob”的人和40岁的人加在同一个帖子id上。你能给我一些你拥有的东西的样本记录吗
      :D
      问题似乎仍然在于,它返回的帖子同时表示姓名和年龄,但年龄可能属于其他人:/