3

当表有 100-200 条记录时,我使用此命令在两个表中查找相同的值。但是当表有100000-20000条记录时,sql管理器,浏览器,很快计算机就会释放。

是否有任何替代命令?

SELECT
distinct
names
FROM
table1
WHERE
names in (SELECT names FROM table2)
4

6 回答 6

4

尝试join

SELECT distinct t1.names
FROM table1 t1
join table2 t2 on t2.names = t1.names
于 2013-07-30T14:06:23.877 回答
1

使用EXISTS

SELECT distinct t1.names
FROM Table1 t1
WHERE EXISTS(
    SELECT 1 FROM tabl2 t2 WHERE t2.names=t1.names
)
于 2013-07-30T14:06:35.267 回答
1
SELECT DISTINCT t1.names
FROM table1 t1
INNER JOIN table2 t2 on t1.names=t2.names

使用 INNER JOIN 确保只有从两个表返回的完全匹配。它应该相对较快,但从长远来看可能需要索引,特别是如果您将它们用于其他 JOIN 和 GROUP BY 等。

于 2013-07-30T14:09:02.347 回答
0

一个简单的连接也可以做到。确保该列已编入索引。

select distinct t1.names 
from table1 t1, table2 t2
where t1.names = t2.names
于 2013-07-30T14:07:13.930 回答
0

names从有匹配的两个表中显示

SELECT names
FROM   table1
UNION ALL
SELECT names
FROM   table2

如果有任何重复值,此查询将返回。如果您只想要不同的值,请尝试此操作,但请注意这会对性能产生影响

SELECT names
FROM   table1
UNION
SELECT names
FROM   table2
于 2013-07-30T14:08:36.730 回答
0
SELECT table1.names
FROM table1
INNER JOIn table2
ON table1.names = table2.names
Group By table1.names
于 2013-07-30T14:09:33.410 回答