当表有 100-200 条记录时,我使用此命令在两个表中查找相同的值。但是当表有100000-20000条记录时,sql管理器,浏览器,很快计算机就会释放。
是否有任何替代命令?
SELECT
distinct
names
FROM
table1
WHERE
names in (SELECT names FROM table2)
尝试join
SELECT distinct t1.names
FROM table1 t1
join table2 t2 on t2.names = t1.names
使用EXISTS
:
SELECT distinct t1.names
FROM Table1 t1
WHERE EXISTS(
SELECT 1 FROM tabl2 t2 WHERE t2.names=t1.names
)
SELECT DISTINCT t1.names
FROM table1 t1
INNER JOIN table2 t2 on t1.names=t2.names
使用 INNER JOIN 确保只有从两个表返回的完全匹配。它应该相对较快,但从长远来看可能需要索引,特别是如果您将它们用于其他 JOIN 和 GROUP BY 等。
一个简单的连接也可以做到。确保该列已编入索引。
select distinct t1.names
from table1 t1, table2 t2
where t1.names = t2.names
names
从有匹配的两个表中显示
SELECT names
FROM table1
UNION ALL
SELECT names
FROM table2
如果有任何重复值,此查询将返回。如果您只想要不同的值,请尝试此操作,但请注意这会对性能产生影响
SELECT names
FROM table1
UNION
SELECT names
FROM table2
SELECT table1.names
FROM table1
INNER JOIn table2
ON table1.names = table2.names
Group By table1.names