我已经在这个问题上抓了好几个小时了。我正在使用PHP和MySQLi。我有两个表:table1和table2。 table1表有:
uid
name
phoneNumber
table2表有
id
phoneNumber
与包含约1000个条目的users表相比,已注册表包含100,000多个条目。我正在寻找一个有效的查询来扫描table2并计算table1(phoneNumber)中存在phoneNumber值的记录数。
我将非常感谢解决此查询问题的任何帮助或方向
问候:)
答案 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 )