从另一个表中存在某个字段的表中计算的最快方法?

时间:2014-07-22 09:37:26

标签: mysql sql

我已经在这个问题上抓了好几个小时了。我正在使用PHP和MySQLi。我有两个表:table1和table2。 table1表有:

uid
name
phoneNumber

table2表有

id
phoneNumber

与包含约1000个条目的users表相比,已注册表包含100,000多个条目。我正在寻找一个有效的查询来扫描table2并计算table1(phoneNumber)中存在phoneNumber值的记录数。

我将非常感谢解决此查询问题的任何帮助或方向

问候:)

3 个答案:

答案 0 :(得分:1)

SELECT count(t2.id) 
FROM table2 t2 
WHERE exists (select t1.* FROM table1 t1 WHERE t1.phoneNumber = t2.phoneNumber)
GROUP BY t2.phoneNumber

答案 1 :(得分:1)

您能否详细解释一下您的表格是什么样的?

你需要有一个外键才能实现这一点(这几乎意味着两个表中的id或键是相同的,所以它们可以由该列左键连接),然后是一个小的WHERE t2 .col IS NOT NULL并且你已经完成但是我不能给你一个示例查询,直到我确定你的数据库结构真的如何,因为字段" phoneNumber"看起来有些多余。

答案 2 :(得分:1)

#1:
select count(*)  
from table1 as t1
where exists
 ( select *
   from table2 as t2 
   where t1.phoneNumber = t2.phoneNumber) 

#2:
select count(*)
from table1 as t1
join table2 as t2
 on t1.phoneNumber = t2.phoneNumber

#3:
select count(*)  
from table1 as t1
where phoneNumber in
 ( select phoneNumber
   from table2 as t2 )