3

テーブルに 100 ~ 200 のレコードがある場合、このコマンドを使用して 2 つのテーブルで同じ値を検索しています。しかし、テーブルに 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
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 に答える
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 に答える
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 distinct t1.names 
from table1 t1, table2 t2
where t1.names = t2.names
于 2013-07-30T14:07:13.930 に答える
0
SELECT table1.names
FROM table1
INNER JOIn table2
ON table1.names = table2.names
Group By table1.names
于 2013-07-30T14:09:33.410 に答える