从一个表中选择count(id),其中该id存在于另一个表MYSQL中

时间:2012-04-20 02:20:03

标签: mysql

编辑:详细说明

详细说明:

*在table_a中有100个成员,但只有50个成员在table_b中有记录,只有25个成员在table_b中有记录被批准= 1因此,查询返回的值将是25 *

嘿,这里的每个人都是我想要解决的查询,它需要返回一个结果计数,这样我就可以使用mysql_result($ query,0)进行访问。

SELECT COUNT(id) FROM table_a WHERE (THIS IS WHERE I AM STUCK)

我需要检查table_b中与table_b中的每个id相匹配的table_b WHERE memberID中的memberID的计数是否大于1

最终结果需要是table_b中具有条目的成员数量的计数。

需要访问的表列示例

table_a
-----------------
id

table_b
------------------
id
memberID
approved

如果您需要更多详细信息,请与我们联系。

5 个答案:

答案 0 :(得分:1)

我假设您希望获得table_a中与table_b匹配的记录数,只要table_b中的值得到批准即可。因此,我会加入2个表。内部联接确保您只考虑两个表中的行,并且where语句负责批准的需求。

select count(a.id) 
from table_a a
join table_b b
on a.id = b.memberID
where b.approved=1

答案 1 :(得分:0)

 SELECT b.ID, a.ID 

 FROM table_a a, table_b b 

 WHERE a.ID = b.ID AND b.ID = 1

答案 2 :(得分:0)

我在SQL中有点生疏,但可以通过在查询中指定这两个表来实现:

SELECT COUNT(DISTINCT table_a.id) 
  FROM table_a, table_b 
  WHERE table_a.id = table_b.MemberID 
    AND table_b.approved = 1;

我相信这符合您的选择标准。

答案 3 :(得分:0)

SELECT COUNT(*) AS cnt
FROM table_a AS a
WHERE EXISTS
      ( SELECT *
        FROM table_b AS b
        WHERE b.memberID = a.id
          AND b.approved = 1
      )

答案 4 :(得分:0)

解决了问题

不得不向后看

    SELECT COUNT( DISTINCT memberID )
    FROM table_b
    WHERE approved =1

我甚至不需要查看table_a,因为我正在计算基于table_b的memberID

有时,解决方案非常简单,就在您的面前。

感谢您的帮助!我希望将来能有所帮助。