MySQL交叉选择限制问题

时间:2012-02-23 00:36:52

标签: mysql sql

我有两张桌子。

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

谢谢。

1 个答案:

答案 0 :(得分:1)

如果x列都是VARCHAR,那么相当简单的以下内容将会起作用,但会导致该表大小的性能问题。

SELECT
    t2.*
FROM t2
INNER JOIN t1
ON t1.x = t2.x

您在xt1中的t2列上是否有索引,就像这样有助于提高查询速度。我建议不要在生产环境中运行此查询。如果不可避免,我将不得不建议包括LIMIT 10(或者您需要多行)以限制影响。