2010-07-15 65 views
2

我有兩個表tbl_a和tbl_b和他們的領域是帶有兩個'ON'關鍵字的SQL連接表?

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; 

正如你可以看到我想要使用有關關鍵字兩個鍵,無論如何要做到這一點? 感謝您的提前...

回答

3

您所查詢的是正確的,沒有必要把額外在關鍵字 和關鍵字也加入在兩個不同的列的工作。只需將支架正確理解即可。

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; 
+0

由於它的作品!我要問別的,在tbl_a基本上有各地的百的記錄,但在tbl_b有十萬條記錄,它需要近120秒的執行it.Is正常嗎?我使用專用服務器 – 2010-07-15 05:58:25

+0

歡迎你 – 2010-07-15 06:06:16

+0

我解決了它有邏輯錯誤,所以導致低性能。再次感謝你 – 2010-07-15 07:55:04

0

sql server允許這個。我可以說其他的實現。

1

你把它的方式應該很好。

在MySQL中,您可以使用AND設置多個連接約束。

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;