寻找替代SQL命令以在两个表中查找相同的值

时间:2013-07-30 14:04:48

标签: mysql sql

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

是否有替代命令?

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

6 个答案:

答案 0 :(得分:4)

尝试使用join

SELECT distinct t1.names
FROM table1 t1
join table2 t2 on t2.names = t1.names

答案 1 :(得分:1)

使用EXISTS

SELECT distinct t1.names
FROM Table1 t1
WHERE EXISTS(
    SELECT 1 FROM tabl2 t2 WHERE t2.names=t1.names
)

答案 2 :(得分:1)

SELECT DISTINCT t1.names
FROM table1 t1
INNER JOIN table2 t2 on t1.names=t2.names

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

答案 3 :(得分:0)

一个简单的连接也会这样做。 确保列已编入索引。

select distinct t1.names 
from table1 t1, table2 t2
where t1.names = t2.names

答案 4 :(得分:0)

两个表中显示names,其中有匹配

SELECT names
FROM   table1
UNION ALL
SELECT names
FROM   table2

此查询将返回重复值(如果有)。如果您只想要不同的值,那么试试这个,但请注意会对性能产生影响

SELECT names
FROM   table1
UNION
SELECT names
FROM   table2

答案 5 :(得分:0)

SELECT table1.names
FROM table1
INNER JOIn table2
ON table1.names = table2.names
Group By table1.names