2015-05-26 122 views
1

我想这一点:MySQL的加入同一个表两次

select 
audit_log_entries.created_at, 
audit_log_orig_term_types.name as originator, 
audit_log_orig_term_types.name as terminator 
from audit_log_entries 
join audit_log_orig_term_types on audit_log_entries.originator_type_id = audit_log_orig_term_types.id 
join audit_log_orig_term_types on audit_log_entries.terminator_type_id = audit_log_orig_term_types.id; 

我认为,意图很明显,我想为发端和终结这两个名字。我在第一个表中有他们的ID,在另一个表上有他们的名字。

我从此得到一个错误:ERROR 1066 (42000): Not unique table/alias: 'audit_log_orig_term_types'

哪来的语法错误?

回答

2

你可以这样:

select 
audit_log_entries.created_at, 
audit1.name as originator, 
audit2.name as terminator 
from audit_log_entries 
join audit_log_orig_term_types audit1 on audit_log_entries.originator_type_id = audit1.id 
join audit_log_orig_term_types audit2 on audit_log_entries.terminator_type_id = audit2.id; 
1

您需要别名表:

join audit_log_orig_term_types AS alias1 on audit_log_entries.originator_type_id = alias1.id 
           ^^^^^^^^^           ^^^^^^ 
join audit_log_orig_term_types AS alias2 on audit_log_entries.terminator_type_id = alias2.id; 
0

使用的连接表的别名:

Join table1 as t1 on t1.Id = [...]