SQL连接表有两个'ON'关键字?

时间:2010-07-15 05:41:06

标签: mysql join database-connection

我有两个表tbl_a和tbl_b,它们的字段是

tbl_a
-----
a_id a_name a_surname a_c_id a_d_id

tbl_b
-----
b_id b_name b_phone b_c_id b_d_id

我想加入这两个表:

select *from tbl_a join tbl_b on tbl_a.a_c_id=tbl_b.b_c_id AND tbl_a.a_d_id=tbl_b.b_d_id where tbl_a.id>15;

正如你所看到我想为ON关键字使用两个键,无论如何都要这样做吗? 谢谢你提前......

4 个答案:

答案 0 :(得分:3)

您的查询是正确的,无需添加额外的On关键字 AND关键字可以在两个不同的列上进行连接。只需将支架正确理解即可。

select *from tbl_a join tbl_b on 
(
  tbl_a.a_c_id=tbl_b.b_c_id 
  AND 
  tbl_a.a_d_id=tbl_b.b_d_id 
)
where tbl_a.id>15;

答案 1 :(得分:1)

你说它的方式应该可以正常工作。

在MySQL中,您可以使用AND来设置多个连接约束。

答案 2 :(得分:0)

Sql server允许这样做。我可以代言其他实现。

答案 3 :(得分:0)

它工作正常,但使用别名而不是长表名

select * from tbl_a a 
         join tbl_b b on a.a_c_id=b.b_c_id AND a.a_d_id=b.b_d_id 
         where a.id>15;