我有两张桌子。
T1有一列有9000条唯一记录(varchar)。
T2有很多列,有超过100万条记录。 T2的一列T2.x
具有来自T1列T1.x
的数据,但是一些T2记录在其列T2.x
中具有T1列T1.x
中不存在的数据。 T2.x
也可以为NULL。
我想列出T2的所有记录,其中T2.x的记录与T1.x匹配
I tried = SELECT t1.column_x, t2.* from t1, t2 WHERE x = t1.x
但是,这仅列出了9000条记录,而忽略了T2中存在的许多其他记录。
我如何实现我的目标?
e.g.
**t1 [x]
===**
a
b
c
**t2
===** [x]
1 .. .. .. a
2 .. .. .. b
3 .. .. .. eee
4 .. .. .. NULL
5 .. .. .. c
6 .. .. .. a
7 .. .. .. c
我想得到:1-2-5-6-7
谢谢。
答案 0 :(得分:1)
如果x
列都是VARCHAR,那么相当简单的以下内容将会起作用,但会导致该表大小的性能问题。
SELECT
t2.*
FROM t2
INNER JOIN t1
ON t1.x = t2.x
您在x
和t1
中的t2
列上是否有索引,就像这样有助于提高查询速度。我建议不要在生产环境中运行此查询。如果不可避免,我将不得不建议包括LIMIT 10
(或者您需要多行)以限制影响。