0

两个mysql表,如A和B

emp_A(id,name,some_text)     PK is: id

emp_B(sr_no,emp_id,loc,adrr) PK is: emp_id+sr_no

emp_sr(sr_no,a,b)            PK is: sr_no

我的桌子是这样的。我要像这样查询

select A.name, B.loc 
from emp_A, emp_B B 
where A.id=B.em_id 
and sr_no =123

emp_A 表有大约 3L 条记录 emp_B 表有大约 8L 条记录。

我怎样才能固定我的加入查询?

请帮我??????

4

2 回答 2

1

而不是WHERE,请使用ON您的联接子句。

select A.name, B.loc from emp_A
    inner join emp_B B on A.id=B.em_id and sr_no =123

当您只使用一个WHERE子句时,首先将 A 中的每条记录连接到 B 中的每条记录,然后过滤掉一些记录。因此,您正在构建一张巨大的桌子作为中间步骤。

当您使用ON子句时,不匹配的记录会在连接发生时被过滤掉。

于 2012-12-14T11:08:52.827 回答
1
Please try this

select A.name, B.loc from emp_A A join emp_B B on(A.id=B.emp_id) join emp_sr C on (B.sr_no=C.sr_no) where C.sr_no = 123
于 2012-12-14T11:09:30.100 回答