MySQL是一款非常強(qiáng)大的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù),不僅支持靜態(tài)關(guān)聯(lián)表查詢,還支持動(dòng)態(tài)關(guān)聯(lián)表查詢。
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.table1_id
動(dòng)態(tài)關(guān)聯(lián)表查詢能夠根據(jù)實(shí)際的情況來(lái)關(guān)聯(lián)不同的表,有利于提高查詢效率。
舉個(gè)例子,假設(shè)我們有一個(gè)文章系統(tǒng),文章和評(píng)論是兩個(gè)獨(dú)立的表。我們需要查詢所有文章以及每篇文章的前五條評(píng)論內(nèi)容。使用靜態(tài)關(guān)聯(lián)的話,需要進(jìn)行多次查詢。
SELECT * FROM articles; SELECT * FROM comments WHERE article_id = 1 LIMIT 5; SELECT * FROM comments WHERE article_id = 2 LIMIT 5; SELECT * FROM comments WHERE article_id = 3 LIMIT 5; SELECT * FROM comments WHERE article_id = 4 LIMIT 5; ......
而使用動(dòng)態(tài)關(guān)聯(lián)的話,只需要一次查詢即可得到所有文章以及對(duì)應(yīng)的前五條評(píng)論內(nèi)容。
SELECT articles.*, comments.* FROM articles LEFT JOIN ( SELECT * FROM comments ORDER BY created_at DESC LIMIT 5 ) comments ON articles.id = comments.article_id;
這樣可以避免進(jìn)行多次查詢,提高了效率。