[英]Select count(id) from one table where that id is present in another table 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中的memberID的数量与table_a中的每个ID匹配并在table_b中批准的MemberID = 1)-大于1
最终结果必须是在table_b中具有条目的成员数的计数。
需要访问的表列样本
table_a
-----------------
id
table_b
------------------
id
memberID
approved
让我知道是否需要更多详细信息。
我假设您要获取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
SELECT b.ID, a.ID
FROM table_a a, table_b b
WHERE a.ID = b.ID AND b.ID = 1
我对SQL有点生锈,但是可以通过在查询中指定两个表来实现:
SELECT COUNT(DISTINCT table_a.id)
FROM table_a, table_b
WHERE table_a.id = table_b.MemberID
AND table_b.approved = 1;
我相信符合您的选择标准。
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
)
问题解决了
不得不倒想
SELECT COUNT( DISTINCT memberID )
FROM table_b
WHERE approved =1
我什至不需要查看table_a,因为我正在基于table_b计数memberID
有时解决方案是如此简单,就在您眼前。
感谢您的所有帮助! 我希望这对将来有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.