第一个表有域名和计数。
domain count
abc.com 5
def.com 10
ghi.com 11
jkl.com 4
第二个表有电子邮件ID,域名和域名(这个表会更长)
email_id domain_id domain
226902 2443 abc.com
154689 100945 abc.com
96480 130702 def.com
586924 71563 def.com
142857 132667 jkl.com
3820065 130702 jkl.com
我想得到的是从第一张表中获取计数并从第二张表中获取相应的匹配。例如abc.com我只想要第二个表中的电子邮件ID的前5个匹配,然后是def.com,我只想要第二个表中的电子邮件ID的前10个匹配,依此类推...... / p>
我有没有办法在SQL中执行此操作,或者我应该继续在php中执行此操作
欢迎任何帮助或替代解决方案。谢谢
答案 0 :(得分:0)
这是另一种方法
SELECT *
FROM first_table A
CROSS APPLY (SELECT TOP (COUNT) *
FROM second_table B
WHERE A.domain = B.domain
ORDER BY email_id,
domain_id) CS
如果index
上有second_table
row_number
,这个会更快。不需要像nonclustered index
方法那样的全表扫描。
如果第二个表上没有索引,则创建以下CREATE NONCLUSTERED INDEX ix_Second_table_domain_email_id_domain_id
ON Second_table(domain, email_id, domain_id)
index seek
哪个应该有助于优化人员在second_table
中选择from Tkinter import *
import Tkinter
而不是进行表扫描